Hi, This is the yearly FAQ posting about the symbols defined on C/C++ compilations on Windows.
1) The compiler indicators: - Mingw, Cygwin: __GNUC__ - MSVC: _MSC_VER - Borland: __TURBOC__, __BORLANDC__ 2) The CPU indicators for x86: - Mingw, Cygwin: _X86_, __i386__ - MSVC, Borland: _M_IX86 The CPU indicators for x86_64: - Mingw, Cygwin: __x86_64__ - MSVC: _M_X64 3) Operating system: - Cygwin default: __CYGWIN32__ - Cygwin when the installer wants to use native Woe32 API (option -mwin32): __CYGWIN32__, _WIN32 - Mingw: _WIN32 - MSVC: _WIN32 - Borland: __WIN32__ So, to test whether native Woe32 API is available, use defined _WIN32 || defined __WIN32__ And to test whether native Woe32 API should be used when there is also an equivalent POSIX API, use (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN32__ Bruno References: [1] http//predef.sourceforge.net/ [2] GNU clisp's lispbibl.d