c++ - 如何在 Visual C++ 中有条件地包含一个不存在的文件?

标签 c++ visual-c++

我正在使用 Visual C++ 构建和测试一个项目,但我也会在其他平台上使用它。我最初在不同的平台上开始编写代码。

在我的一些类 header 中,我需要包含一个特定于其他平台的文件,但是,该文件在 Visual C++ 工作区中不存在。

我试过使用这样的代码:

 #if TARGET == OTHERPLATFORM
 #include "themissingfile.h"
 #endif

TARGET 在别处定义为 WINDOWS

 #define TARGET WINDOWS

但是,我仍然收到一个编译器错误,指出找不到“themissingfile.h”。看起来预编译器正在处理 if 之前的 include。解决这个问题的最佳方法是什么?我想我可以在 Visual C++ 源文件夹中创建一个空白的“themissingfile.h”,但在我看来应该有更好的解决方案。

最佳答案

#define TARGET WINDOWS 不会将 TARGET 设置为字符串 WINDOWS:它将其设置为 WINDOWS 定义的任何内容。最有可能发生这种情况:

  #define WINDOWS          // Sets WINDOWS to 0
  #define OTHERPLATFORM    // Sets OTHERPLATFORM to 0
  #define TARGET WINDOWS   // Sets TARGET to 0

  #if TARGET == OTHERPLATFORM // Evaluates to 0==0, so true

关于c++ - 如何在 Visual C++ 中有条件地包含一个不存在的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034732/

相关文章:

c# - 获取已安装的 Windows 应用商店应用列表

c++ - 在 C++ 中打开用于读取的文件

c++ - 迭代器操作不起作用

c++ - Qt/C++ QTableWidget : Doing something when a header is doubleclicked

c++ - 如何在 C++ 中引用函数(转换 python 代码)

c++ - 估算边绘图的平均边厚

c++ - 使用 C++ (CFBundleGetMainBundle) 获取包中文件的路径

c++ - 如何将 char * 转换为 const OLECHAR * 以便在 SYSALLOCSTRING() 中使用?

c - 将 C99 功能用于跨平台应用程序

windows - 我如何从 C++ 服务应用程序访问 Windows 登录(身份验证)API?