2011年11月23日 星期三
[DEBUG] _RPT & _RPTF
Visual C++ 提供了 _RPT 和 _RPTF 巨集來幫助使用者除錯,
其功能類似於 printf,但僅在 Debug 設定下會印出字串,
Release 設定下則會自動刪除。其可印出呼叫該巨集的程式檔案名稱與行數。
例如 :
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
_RPT0(_CRT_WARN, "Test.\n");
// Output
Test
_RPT1(_CRT_WARN, "Test %d.\n", 1);
// Output
Test 1
_RPTF0(_CRT_WARN, "Test.\n");
// Output
d:\win32\assert\assert\assert.cpp(54) : Test
_RPTF1(_CRT_WARN, "Test %d.\n", 1);
// Output
d:\win32\assert\assert\assert.cpp(54) : Test 1
有無 F 差在要不要印出檔案名稱與行數,而數字代表要代入的參數個數,最多到 4 。
[DEBUG] _ASSERT & _ASSERTE
Visual C++ 提供了 _ASSERT 和 _ASSERTE 巨集來幫助使用者除錯,
其功能類似於 printf,但僅在 Debug 設定下會印出字串,
Release 設定下則會自動刪除。其可印出一布林運算式的結果。
用法例如 :
_ASSERT(3 == 3);
// Output
d:\win32\assert\assert\assert.cpp(53) :
_ASSERT(3 == 2);
// Output
d:\win32\assert\assert\assert.cpp(53) : Assertion failed!
_ASSERTE(3 == 3);
// Output
當條件成立時不印出任何字串
_ASSERTE(3 == 2);
// Output
d:\win32\assert\assert\assert.cpp(53) : Assertion failed : 3 == 2
記得要先設定為 _CRTDBG_MODE_FILE,才會顯示在 console 上,
否則預設為跳出視窗( _CRTDBG_MODE_WNDW )。
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
其功能類似於 printf,但僅在 Debug 設定下會印出字串,
Release 設定下則會自動刪除。其可印出一布林運算式的結果。
用法例如 :
_ASSERT(3 == 3);
// Output
d:\win32\assert\assert\assert.cpp(53) :
_ASSERT(3 == 2);
// Output
d:\win32\assert\assert\assert.cpp(53) : Assertion failed!
_ASSERTE(3 == 3);
// Output
當條件成立時不印出任何字串
_ASSERTE(3 == 2);
// Output
d:\win32\assert\assert\assert.cpp(53) : Assertion failed : 3 == 2
記得要先設定為 _CRTDBG_MODE_FILE,才會顯示在 console 上,
否則預設為跳出視窗( _CRTDBG_MODE_WNDW )。
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
訂閱:
文章 (Atom)