我已經告訴VC++在發佈模式下編譯我的程序,但assert()語句仍然會觸發。我認爲斷言應該是從發佈版本中編譯出來的。這是怎麼回事?有沒有其他設置我需要設置跳過編譯它們?斷言沒有編譯出發布版本
回答
檢查您正在定義的預處理器符號。調試版本通常會定義_DEBUG
,發佈版本通常會定義NDEBUG
。當定義NDEBUG
時,斷言通常會被關閉。
NDEBUG設置和_DEBUG不是 – jeffythedragonslayer 2011-05-28 16:51:44
好吧,這很有趣:在主項目中,具有WinMain(),NDEBUG定義和_DEBUG不是。但是對於所有其他項目,即使它們設置爲發佈模式,情況正好相反。 – jeffythedragonslayer 2011-05-28 17:03:34
好的。所以我現在已經把所有的文件合併到一個項目中,並且它似乎解決了這個問題。仍然不知道爲什麼每個項目的調試符號都不同。 – jeffythedragonslayer 2011-05-29 04:53:26
在調試器下打開應用程序。斷言對話框啓動時,執行debug-> break。查看assert正在觸發的源文件。現在看看該文件的構建設置。如果設置看起來正確並且您正在加載發行版本,請在編譯器命令行上設置/ P和/ d1PP以顯示錯誤的#define來自何處。
馬丁
- 1. Q/A,發佈版本VS調試版本,並斷言
- 2. 無法導出用於Adobe AIR 1.0的發佈版本/編譯
- 3. Android Studio發佈版本沒有zipaligning
- 4. 編譯發佈
- 5. 錯誤編譯版本佈局
- 6. CruiseControl.Net建立出版商 - 只能發佈編譯後的文件
- 7. 如何斷言沒有引發異常?
- 8. 如何在'發佈'版本上編譯某些Android菜單項
- 9. 將NKDbgPrintfW編譯爲發佈版本中的nop嗎?
- 10. 發佈版本上的XCode編譯錯誤
- 11. Maven發佈插件:指定java編譯器版本
- 12. 無法編譯發佈版本的UWP - Visual Studio 2017
- 13. C#編譯器如何在發佈版本中刪除Debug.Assert?
- 14. 是否存在具有本地化編程語言版本的編譯器?
- 15. 爲什麼斷言是從生產版本編譯而來(性能除外)?
- 16. .NET本機編譯器不斷拋出編譯錯誤
- 17. C#編譯版本
- 18. 編譯「ant」版本時出錯
- 19. 有沒有告訴編譯器打印其版本的命令?
- 20. 如何在調試版本中測試斷言,但在發佈中返回值?
- 21. 錯誤在編譯編譯版本
- 22. 爲所有Linux發行版編譯C++
- 23. 調試發佈版本時出錯
- 24. CppUnit預計異常與斷言拋出警告編譯C4127
- 25. _invalid_parameter獲取沒有有用的信息發佈版本
- 26. OpenGL的編譯 - glGetUniformLocation沒有宣佈
- 27. Visual Studio 2010根據我的項目是否正在編譯構建或發佈,與第三方庫的調試版本或發佈版本進行編譯?
- 28. ,只有發生在斷言
- 29. 編輯團隊版本中發佈版本的項目屬性
- 30. 斷言提交處於發佈分支
你嘗試 「重建所有」? – 2011-05-28 16:44:26
調試和發佈之間的斷言消息有任何區別嗎? – 2011-05-28 16:56:28
單個或多個模塊輸出? – 2011-05-28 16:56:55