我正在使用Visual C ++来构建和测试项目,但我也将在其他平台上使用它。我最初在不同的平台上启动了代码。
在我的一些类头文件中,我需要包含一个特定于另一个平台的文件,但是,该文件在Visual C ++工作区中不存在。
我尝试过使用这样的代码:
#if TARGET == OTHERPLATFORM
#include "themissingfile.h"
#endif
其中TARGET在其他地方被定义为WINDOWS
#define TARGET WINDOWS
但是,我仍然收到编译器错误,指出无法找到“themissingfile.h”。看起来好像预编译器正在处理if之前的include。什么是最好的解决方法?我想我可以在Visual C ++源文件夹中创建一个空白的“themissingfile.h”,但在我看来应该有一个更好的解决方案。
答案 0 :(得分:4)
改为使用_WIN32
宏:
#ifndef _WIN32
#include "themissingfile.h"
#endif
_WIN32
是为32位和64位版本定义的。请参阅C/C++ Predefined Macros。
答案 1 :(得分:4)
#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