Thread: Os Detection
View Single Post
Old Feb 27th, 2006, 4:35 PM   #21
Kaja Fumei
Hobbyist Programmer
 
Join Date: Oct 2005
Posts: 134
Rep Power: 3 Kaja Fumei is on a distinguished road
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
Kaja Fumei is offline   Reply With Quote