C 在 Windows 和 Linux 上编译:ifdef 开关

新手上路,请多包涵

我想在 Linux 和 Windows 上运行一些 c++ 代码。我只想为一个操作系统而不是另一个操作系统包含一些代码。是否有曾经可以使用的标准 #ifdef

就像是:

   #ifdef LINUX_KEY_WORD
    ... // linux code goes here.
  #elif WINDOWS_KEY_WORD
    ... // windows code goes here.
  #else
  #error "OS not supported!"
  #endif


这个问题确实是重复的,但这里的答案要好得多,尤其是接受的答案。

原文由 Sardathrion - against SE abuse 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 957
2 个回答

利用:

 #ifdef __linux__
    //linux code goes here
#elif _WIN32
    // windows code goes here
#else

#endif

原文由 Muhammad Anjum Kaiser 发布,翻译遵循 CC BY-SA 3.0 许可协议

我知道这不是答案,但如果有人在 Qt 中看起来相同,则添加

在 Qt 中

https://wiki.qt.io/Get-OS-name-in-Qt

 QString Get::osName()
{
#if defined(Q_OS_ANDROID)
    return QLatin1String("android");
#elif defined(Q_OS_BLACKBERRY)
    return QLatin1String("blackberry");
#elif defined(Q_OS_IOS)
    return QLatin1String("ios");
#elif defined(Q_OS_MAC)
    return QLatin1String("osx");
#elif defined(Q_OS_WINCE)
    return QLatin1String("wince");
#elif defined(Q_OS_WIN)
    return QLatin1String("windows");
#elif defined(Q_OS_LINUX)
    return QLatin1String("linux");
#elif defined(Q_OS_UNIX)
    return QLatin1String("unix");
#else
    return QLatin1String("unknown");
#endif
}

原文由 Yash 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题