2011-09-07 28 views
2

在Windows中有避免使用assert(..)函數失敗的CRT對話框的方法嗎?我喜歡將錯誤消息打印到控制檯。如果我們沒有在優化版本中定義NDEBUG來實現這個功能,可以使用CrtReportMode(..)嗎?如何避免與assert(..)函數的CRT對話

-Kartlee

回答

3

您可以使用_CrtSetReportMode_CrtSetReportFile發送輸出到一個文件(在這種情況下stderr)來代替。

_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE) 
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); 

關於發佈版本的使用,注意言論和庫部分:

當未定義_DEBUG,調用_CrtSetReportMode預處理過程中被刪除。

庫:僅用於C運行時庫的調試版本。