我正在开发一个C语言的API多平台,我需要知道是否有办法知道哪个操作系统正在编译它。用C语言开发的程序可以知道哪个操作系统正在编译它?
例如,通过预编译指令一样,如下:
#ifdef LINUX
#include<linuxlib.h>
#elif OSX
#include<osxlib.h>
#elif WINDOWS
#include<rwindowslib.h>
我正在开发一个C语言的API多平台,我需要知道是否有办法知道哪个操作系统正在编译它。用C语言开发的程序可以知道哪个操作系统正在编译它?
例如,通过预编译指令一样,如下:
#ifdef LINUX
#include<linuxlib.h>
#elif OSX
#include<osxlib.h>
#elif WINDOWS
#include<rwindowslib.h>
下面是一些信息:
#if defined(__LINUX__)
// Linux, Android, MacOS
#if defined(__ANDROID__)
// Android
#elif defined(__APPLE__)
// MacOS
#else
// Linux or its flavor
#endif
#elif defined(WIN32)
// Windows targets must have WIN32 (_WIN32)
#endif
这里是什么可以在各种平台上被定义的大名单: http://sourceforge.net/p/predef/wiki/OperatingSystems/
这适用于linux和mac os,我没有测试过Windows – Filipe
@LuizFilipe _WIN32宏由Microsoft为Win API构建强制执行。 http://msdn.microsoft.com/en-us/library/b0084kay.aspx –
为什么你需要知道这一点?也许还有别的东西可以使用? –
请注意,TARGET_OS_MAC可用于OSX。 –
“执行” - 你的意思是“编译”,对吧? – usr2564301