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



Reply via email to