I need my code to do different things based on the operating system on which it gets compiled. I'm looking for something like this:
#ifdef OSisWindows
// do Windows-specific stuff
#else
// do Unix-specific stuff
#endif
Is there a way to do this? Is there a better way to do the same thing?
The Predefined Macros for OS site has a very complete list of checks. Here are a few of them, with links to where they're found:
_WIN32
Both 32 bit and 64 bit
_WIN64
64 bit only
__CYGWIN__
See this related question on some of the pitfalls of using this check.
unix
__unix
__unix__
__APPLE__
Also used for classic
__MACH__
Both are defined; checking for either should work.
__linux__
linux
Obsolete (not POSIX compliant)
__linux
Obsolete (not POSIX compliant)
__FreeBSD__
__ANDROID__