我正在使用 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/