如何在Visual C+;中有条件地包含一个不存在的文件+;? 我使用VisualC++来构建和测试一个项目,但我也将在其他平台上使用它。我最初是在另一个平台上启动代码的 我的一些类头文件需要包含一个特定于另一个平台的文件,但是,这个文件不存在于VisualC++工作空间中。

如何在Visual C+;中有条件地包含一个不存在的文件+;? 我使用VisualC++来构建和测试一个项目,但我也将在其他平台上使用它。我最初是在另一个平台上启动代码的 我的一些类头文件需要包含一个特定于另一个平台的文件,但是,这个文件不存在于VisualC++工作空间中。,c++,visual-c++,C++,Visual C++,我尝试过使用这样的代码: #if TARGET == OTHERPLATFORM #include "themissingfile.h" #endif 其中目标在别处定义为WINDOWS #define TARGET WINDOWS 但是,我仍然收到一个编译器错误,说明找不到“themissingfile.h”。似乎预编译器在if之前处理include。最好的办法是什么?我想我可以在VisualC++源文件夹中创建一个空白的“MasiSigFrase.h”,但我觉得应该有更好的解决方

我尝试过使用这样的代码:

 #if TARGET == OTHERPLATFORM
 #include "themissingfile.h"
 #endif
其中目标在别处定义为WINDOWS

 #define TARGET WINDOWS

但是,我仍然收到一个编译器错误,说明找不到“themissingfile.h”。似乎预编译器在if之前处理include。最好的办法是什么?我想我可以在VisualC++源文件夹中创建一个空白的“MasiSigFrase.h”,但我觉得应该有更好的解决方案。

< P>使用<代码>
#ifndef _WIN32
#include "themissingfile.h"
#endif
\u WIN32
是为32位和64位版本定义的。请参阅。

#定义目标窗口
不将目标设置为字符串窗口:它将其设置为定义为的任何窗口。最有可能发生的情况是:

  #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

(不是我的票)。这不能解释问题,也没有必要。Frederik Slijkerman有正确的答案。@MSalters,OP正在重新发明轮子。存在指示编译器和平台的现有宏。在国际海事组织,这提供了一个解决方案,但不可否认,它并没有解释张贴代码的行为。