Trích dẫn các GHC manual:
Các biểu tượng được xác định bởi GHC được liệt kê dưới đây.
[...]
os_HOST_OS=1
- Đây xác định cho phép biên soạn có điều kiện dựa trên hệ điều hành, nơi os
là tên của hệ điều hành hiện tại (. Ví dụ linux
, mingw32
cho Windows, solaris
, vv) .
Vì vậy, để phát hiện xem mã của bạn đang được biên soạn trên Windows bạn nên sử dụng
#ifdef mingw32_HOST_OS
Rõ ràng, bạn cần phải có CPP kích hoạt cho rằng để làm việc.
Đối với những người đang tự hỏi - mingw32_HOST_OS
cũng được định nghĩa trên Windows 64-bit:
C:\ghc-7.8.2\bin>ghc --info
...
,("Build platform","x86_64-unknown-mingw32")
,("Host platform","x86_64-unknown-mingw32")
,("Target platform","x86_64-unknown-mingw32")
...
C:\ghc-7.8.2\bin>ghc -E -optP-dM -cpp foo.hs
C:\ghc-7.8.2\bin>cat foo.hspp
{-# LINE 1 "foo.hs" #-}
#define __ASSEMBLER__ 1
#define mingw32_HOST_OS 1
#define __GLASGOW_HASKELL__ 708
#define __STDC_HOSTED__ 1
#define TABLES_NEXT_TO_CODE 1
#define x86_64_HOST_ARCH 1
#define x86_64_BUILD_ARCH 1
#define mingw32_BUILD_OS 1
#define __SSE2__ 1
#define __SSE__ 1
gây nhầm lẫn, mingw64_HOST_OS
không phải là - sử dụng để phát hiện x86_64_HOST_ARCH
Windows 64-bit đặc biệt.
Nguồn
2014-04-20 15:11:25
'#ifdef mingw32_HOST_OS'. –