VS2012 C 警告 C4005: '__useHeader': 宏重新定义

新手上路,请多包涵

在将旧的 C++ 项目从 Visual Studio 6 迁移到 Visual Studio 2012 时,我们在标准 Microsoft 平台标头中遇到了一组奇怪的警告:

  • 警告 C4005:“__useHeader”:宏重新定义
  • 警告 C4005:“__on_failure”:宏重新定义

在线搜索仅发现其他几个人遇到此错误。在某些情况下,有人试图使用 VS2012 来编译旧版 DirectX 代码——我没有这样做。在其他情况下,有人试图使用 VS2012 来针对 Windows XP(使用更新 1 中的新选项)——我正在这样做。

DirectX 问题已得到回答,警告将始终存在,告诉您正在使用过时的(Win8 之前)版本的 DirectX 进行编译,您只需要忍受它。

没有回答 Windows XP 的问题。其他人只是说他们无法重现该问题。

我复制了它,并找到了原因,我在这里写下它以帮助遇到此问题的其他人。

原文由 Jeff B 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 988
1 个回答

进入项目属性,找到“预处理器定义”字段。

除了默认和添加的定义常量之外,您还应该看到一个宏:

 %(PreprocessorDefinitions)

这个宏显然引入了一些额外的编译器提供的预处理器定义。我不确定 Visual Studio 的哪个版本引入了这个宏,但它在 Visual Studio 6 _中没有_。

在 Visual Studio 2012 中,此宏 需要 出现在项目的预处理器定义字段中。在早期版本的 Visual Studio 中也可能需要它,但我没有测试过这些。

如果缺少此宏,您将看到如上所示的错误消息。

原文由 Jeff B 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏