6

当我为 Visual C++ 项目的头文件添加包含保护时,它给了我以下警告和错误:

警告 C4603:“_MAPTEST_H”:未定义宏或使用预编译头文件后定义不同

将宏添加到预编译的头文件而不是在这里定义

.\MapTest.cpp(6) : use of precompiled header** // 预编译头 stdafx.h 包含在这一行中

.\MapTest.cpp(186):致命错误 C1020:意外 #endif

但是当我在包含保护之前添加预编译头时,不会发出警告或错误。这是什么原因?

4

2 回答 2

18

我能想到的两个问题:

  1. 据此 Visual C++ 不会在您包含的行之前编译任何内容stdafx.h- 因此该行必须是文件中的第一行。如果你把它放在宏定义之后,它会被跳过,因此你会看到错误。

  2. 以前导下划线和大写字母(或双前导下划线)开头的标识符被保留,这可能会导致名称冲突。有关更多详细信息,请参阅此答案

于 2010-05-31T06:36:41.010 回答
2

尝试打开 stdafx.cpp 并在那里添加您的宏定义!我希望你的问题得到解决

于 2014-12-05T08:48:54.967 回答