2011-10-10 32 views
8

是什麼調試和_DEBUG之間在VC++在Visual Studio 2008.Is那裏,因爲在我的項目有什麼區別區別,在某些模塊預處理程序調試和在某些模塊是_DEBUG。DEBUG VS _DEBUG

+0

相關:['_DEBUG' VS'NDEBUG'](http://stackoverflow.com/questions/2290509/) –

回答

5

在自己的代碼,你可以檢查任何你想要的宏,所以也無所謂使用哪一個。

但您使用的庫可能會有所不同。例如。有關assert狀態的MSDN文檔:

斷言語句僅在定義_DEBUG時編譯。當_DEBUG未定義時,編譯器將斷言視爲空語句。

所以我建議總是使用_DEBUG

編輯:根據MSDN你甚至不定義任何特殊的調試宏,因爲當你指定調試運行時庫編譯器會爲您儘快做到這一點。

2

它實際上取決於定義了什麼宏使用。據我所知,默認的VS2008 C++項目包含_DEBUG以便爲調試配置定義。可能發生的情況是,在您的項目中也定義了自定義的DEBUG宏。嘗試搜索DEBUG定義。

默認情況下,您應該始終使用_DEBUG。

1

如果項目的Codegeneration設定與「調試」什麼,所以_DEBUG宏是由編譯器定義。 相應的編譯選項是 /MDD多線程的DLL,動態鏈接到libc,DEBUG /MLD單線程的,靜態鏈接到libc,DEBUG(VC6) /MTD多線程,靜態鏈接到libc,DEBUG

的編譯器選項/ LDd也定義了_DEBUG宏。

的DEBUG宏往往是明確的調試項目設定定義。

相關問題