我想用C ++编写一个包含系统调用的跨平台函数。我可以检查哪些条件编译标志来确定要为其编译代码的操作系统?我对使用Visual Studio和GCC的Windows和Linux感兴趣。
我认为应该看起来像这样:
void SomeClass::SomeFunction() { // Other code #ifdef LINUX LinuxSystemCall(); #endif #ifdef WINDOWS WindowsSystemCall(); #endif // Other code }
我的gcc(4.3.3)定义了以下与Linux相关的预定义宏:
$ gcc -dM -E - < /dev/null | grep -i linux #define __linux 1 #define __linux__ 1 #define __gnu_linux__ 1 #define linux 1
在VC ++(和许多其他Win32编译器)下,还有几个用于标识平台的预定义宏,最著名的是_WIN32。更多详细信息:http : //msdn.microsoft.com/zh- cn/library/b0084kay(VS.80).aspx