一尘不染

基于操作系统的C ++条件编译

linux

我想用C ++编写一个包含系统调用的跨平台函数。我可以检查哪些条件编译标志来确定要为其编译代码的操作系统?我对使用Visual
Studio和GCC的Windows和Linux感兴趣。

我认为应该看起来像这样:

void SomeClass::SomeFunction()
{
    // Other code

#ifdef LINUX
    LinuxSystemCall();
#endif

#ifdef WINDOWS
    WindowsSystemCall();
#endif

    // Other code
}

阅读 290

收藏
2020-06-07

共1个答案

一尘不染

我的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

2020-06-07