It may a little late now, but here's a header file I made once to detect all the "common" macros for some OS:
#ifndef _MACHINE_H_
#define _MACHINE_H_
#if defined __DARWIN_X11__
# define OS_DARWIN
#elif defined __APPLE__ && (defined __GNUC__ || defined __xlC__)
# define OS_MACX
#elif defined __MACOSX__
# define OS_MACX
#elif defined macintosh || defined Macintosh
# define OS_MAC9
#elif defined linux || defined __linux__ || defined __linux
# define OS_LINUX
#elif defined __CYGWIN__ || defined __CYGWIN32__
# define OS_CYGWIN
# define OS_WIN32
#elif defined __MINGW32__
# define OS_MINGW
# define OS_WIN32
#elif defined __DOS__ || defined MSDOS || defined _MSDOS || defined __MSDOS__
# define OS_MSDOS
#elif defined WIN64 || defined _WIN64 || defined __WIN64__
# define OS_WIN32
# define OS_WIN64
#elif defined _WIN32 || defined WIN32 || defined __NT__ || defined __WIN32__ || defined __TOS_WIN__
# define OS_WIN32
#elif defined _WIN32_WCE
# define OS_WINCE
#elif defined __sun || defined sun
# define OS_SOLARIS
#elif defined hpux || defined __hpux
# define OS_HPUX
#elif defined __OS2__ || defined OS2 || defined _OS2 || defined __TOS_OS2__
# define OS_OS2
#elif defined __sgi
# define OS_IRIX
#elif defined __osf__ || defined __osf
# define OS_OSF
#elif defined _AIX || defined __TOS_AIX__
# define OS_AIX
#elif defined __FreeBSD__ || defined __DragonFly__
# define OS_FREEBSD
# define OS_BSD
#elif defined __NetBSD__
# define OS_NETBSD
# define OS_BSD
#elif defined __OpenBSD__
# define OS_OPENBSD
# define OS_BSD
#elif defined bsdi || defined __bsdi__
# define OS_BSDI
# define OS_BSD
#elif defined AMIGA || defined __amigaos__
# define OS_AMIGA
#elif defined BEOS || defined __BEOS__
# define OS_BEOS
#endif
#if defined OS_WIN32 || defined OS_WIN64
# define OS_WINDOWS
#endif
#if defined OS_MAC9 || defined OS_MACX
# define OS_MAC
#endif
#if !defined OS_MAC9 && !defined OS_MSDOS && !defined OS_OS2 && !defined OS_WINDOWS
# define OS_UNIX
#endif
#endif
and a simple usage would be:
#ifdef OS_WINDOWS
#include <windows.h>
#elif defined OS_LINUX
#include more stuff...
#endif