我有一个Visual Studio 2008解决方案,其中包含许多项目,这些项目都在项目文件的预处理器定义设置中定义_HAS_ITERATOR_DEBUGGING = 0。但是这似乎只适用于某些项目,而其他项目仍然可以通过启用迭代器调试进行编译。在项目设置(有时)中设置_HAS_ITERATOR_DEBUGGING = 0没有任何作用
我已经检查了解决方案中的每个文件,并且没有定义除项目设置以外的其他_HAS_ITERATOR_DEBUGGING
。
将#define _HAS_ITERATOR_DEBUGGING 0
添加到解决方案中的每个stdafx.h的顶部,但是我想知道为什么在项目预处理器定义部分中设置该项目的某些时间不起作用。有任何想法吗?
我认为迈克尔·伯尔的答案可能覆盖它,还要注意有[某些错误,当你建立与`_HAS_ITERATOR_DEBUGGING = 0`](http://stackoverflow.com/questions/787288/problem-when-disabling-checked -iterators-in-vs2008-sp1-has-iterator-debugging0),这是我公司遇到的问题,因为我们的所有软件都是在禁用该选项的情况下构建的。微软的编译团队提到它应该在VS2010中修复。 – birryree 2010-11-26 01:58:44
我不喜欢禁用它的想法,但在大多数情况下,这个选项是病毒式的,不幸的是我们的一个依赖关系是在禁用选项的情况下构建的。 – 2010-11-30 05:54:07