c++ - 如何在不同的平台有不同的 Header?

标签 c++

<分区>

我是 C++ 的新手,我有一个文件必须在 Linux 和 Windows 中构建。

喜欢:

if_Windows
    #include <Include1>
if_Linux
    #include <Include2>

有没有可能做这样的事情?你是怎么做到的?

最佳答案

您可以定义一个在为 Windows 和 Linux 编译时设置的宏。

#define MYPROJECT_CONFIG_WINDOWS_PLATFORM

#if defined(MYPROJECT_CONFIG_WINDOWS_PLATFORM)
    #include <include1>
#elif defined(MYPROJECT_CONFIG_LINUX_PLATFORM)
    #include <include2>
#else
    #error link: no suitable library
#endif

然后您所要做的就是在为 Window 编译时定义 MYPROJECT_CONFIG_WINDOWS_PLATFORM,在为 Linux 编译时定义 MYPROJECT_CONFIG_LINUX_PLATFORM

一些 IDE 也有针对它们正在编译的平台的预设宏(如 Windows 的 WIN32),但您必须检查它们的文档。

关于c++ - 如何在不同的平台有不同的 Header?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978363/

相关文章:

php - 为什么 C++ 应用程序不能创建 php、html 和 css 等接口(interface)?

c++ - 如何在 Visual Studio 2010 中安装 Crypto++?

c++ - 快速解析文件?

c++ - 关于 sizeof 运算符的困惑

c++ - Sublime Text 无法在 C++ 中编译多文件项目

c++ - 在 Linux 上从 UART 进行阻塞 read()

c++ - Eigen 和巨大的密集二维阵列

c++ - 顶点着色器属性位置中的数据已损坏

c++ - 从另一个线程(子线程)访问QTcpSocket

c++ - 谁负责在 move 时删除堆分配的对象?