2014-02-16 27 views
0

我正在开发一个C语言的API多平台,我需要知道是否有办法知道哪个操作系统正在编译它。用C语言开发的程序可以知道哪个操作系统正在编译它?

例如,通过预编译指令一样,如下:

#ifdef LINUX 
#include<linuxlib.h> 
#elif OSX 
#include<osxlib.h> 
#elif WINDOWS 
#include<rwindowslib.h> 
+0

为什么你需要知道这一点?也许还有别的东西可以使用? –

+0

请注意,TARGET_OS_MAC可用于OSX。 –

+1

“执行” - 你的意思是“编译”,对吧? – usr2564301

回答

1

下面是一些信息:

#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/

+0

这适用于linux和mac os,我没有测试过Windows – Filipe

+1

@LuizFilipe _WIN32宏由Microsoft为Win API构建强制执行。 http://msdn.microsoft.com/en-us/library/b0084kay.aspx –

相关问题