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

How can I conditionally include a nonexistent file in Visual C++?

本文关键字:包含一 不存在 文件 有条件 Visual C++      更新时间:2023-10-16

我正在使用Visual C++来构建和测试一个项目,但我也会在其他平台上使用它。我最初是在另一个平台上启动代码的。

在我的一些类头中,我需要包含一个特定于其他平台的文件,但是,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

改用_WIN32宏:

#ifndef _WIN32
#include "themissingfile.h"
#endif

CCD_ 3是为32位和64位构建定义的。请参见C/C++预定义宏。