我有一个Visual Studio 2008解决方案,其中包含许多项目,这些项目都在项目文件的预处理器定义设置中定义_HAS_ITERATOR_DEBUGGING = 0。但这似乎只适用于某些项目,而其他项目仍然可以在启用迭代器调试的情况下进行编译。
我已经检查了解决方案中的每个文件,除了项目设置之外,没有定义_HAS_ITERATOR_DEBUGGING
。
在解决方案中将#define _HAS_ITERATOR_DEBUGGING 0
添加到每个stdafx.h的顶部可解决此问题,但我想知道为什么在项目预处理器定义部分中设置它在某些时候不起作用。有什么想法吗?
答案 0 :(得分:4)
偶尔咬我的一件事是项目设置很容易在不同的配置之间变得不同(例如Release与Debug)。确保设置在那里或您正在构建的配置。当然,定义拼写正确......
对于遇到问题的项目,请查看构建日志(BuildLog.htm - 它在Build Output窗口中显示的链接)并确保
-D "_HAS_ITERATOR_DEBUGGING=0"
选项显示在编译器命令行上(实际上在响应文件中,该命令行选项已传递给编译器)。