2010-11-26 57 views
4

我有一個Visual Studio 2008解決方案,其中包含許多項目,這些項目都在項目文件的預處理器定義設置中定義_HAS_ITERATOR_DEBUGGING = 0。但是這似乎只適用於某些項目,而其他項目仍然可以通過啓用迭代器調試進行編譯。在項目設置(有時)中設置_HAS_ITERATOR_DEBUGGING = 0沒有任何作用

我已經檢查瞭解決方案中的每個文件,並且沒有定義除項目設置以外的其他_HAS_ITERATOR_DEBUGGING

#define _HAS_ITERATOR_DEBUGGING 0添加到解決方案中的每個stdafx.h的頂部,但是我想知道爲什麼在項目預處理器定義部分中設置該項目的某些時間不起作用。有任何想法嗎?

+0

我認爲邁克爾·伯爾的答案可能覆蓋它,還要注意有[某些錯誤,當你建立與`_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

+0

我不喜歡禁用它的想法,但在大多數情況下,這個選項是病毒式的,不幸的是我們的一個依賴關係是在禁用選項的情況下構建的。 – 2010-11-30 05:54:07

回答

4

有一件事情讓我時不時地發現,項目設置很容易在不同的配置(例如Release和Debug)之間變得不同。確保設置在那裏或您正在構建的配置。當然,定義拼寫正確...

對於有問題的項目,請查看構建日誌(BuildLog.htm - 它的鏈接顯示在Build Output窗口中)以及確保

-D "_HAS_ITERATOR_DEBUGGING=0" 

選項顯示編譯器命令行(實際上在具有傳遞到編譯器的命令行選項響應文件)上。

相關問題