_RPT
、、 _RPTF
_RPTW
、 _RPTFW
宏
產生偵錯報表,以追蹤應用程式進度 (僅限偵錯版本)。 後 n
綴會指定 中的 args
引數數目,而且可以是 0、1、2、3、4 或 5。
語法
_RPTn(
reportType,
format,
...[args]
);
_RPTFn(
reportType,
format,
[args]
);
_RPTWn(
reportType,
format
[args]
);
_RPTFWn(
reportType,
format
[args]
);
參數
reportType
報表類型:_CRT_WARN
、_CRT_ERROR
或 _CRT_ASSERT
。
format
用於建立使用者訊息的格式控制字串。
args
format
使用的替換引數。
備註
所有這些宏都會採用 reportType
和 format
參數。 此外,它們最多可能需要四個引數,以附加至宏名稱的數位表示。 例如, _RPT0
和 _RPTF0
不再接受引數, _RPT1
並 _RPTF1
採用 arg1
、 _RPTF2
_RPT2
和 arg2
和 arg1
等等。
和 _RPTF
宏類似于 printf
函 _RPT
式,因為它們可用來追蹤應用程式在偵錯過程中的進度。 不過,這些宏的彈性會比 printf
因為它們不需要包含在 #ifdef 語句中 ,以避免在應用程式的零售組建中呼叫它們。 這個彈性是透過使用 _DEBUG
宏來達成; _RPT
和 _RPTF
宏只有在定義旗標時才 _DEBUG
可使用。 未定義時 _DEBUG
,會在前置處理期間移除對這些宏的呼叫。
_RPTW
和 _RPTFW
巨集是這些巨集的寬字元版本。 它們與 wprintf
類似,並接受寬字元字串作為引數。
宏會呼叫 函 _RPT
_CrtDbgReport
式,以產生具有使用者訊息的偵錯報表。 _RPTW
巨集會呼叫 _CrtDbgReportW
函式來產生具有寬字元的相同報表。 除了使用者訊息之外,_RPTF
和 _RPTFW
巨集還會建立內含呼叫報表巨集之原始程式檔和行號的偵錯報表。 使用者訊息的建立方式是使用 函式所 printf
定義的相同規則,將引數取代 arg[n]
為 format
字串。
_CrtDbgReport
或 _CrtDbgReportW
會根據目前報表模式以及針對 reportType
所定義的檔案來產生偵錯報表,並判斷其目的地。 和 _CrtSetReportFile
函 _CrtSetReportMode
式可用來定義每個報表類型的目的地。
_RPT
如果呼叫宏且 _CrtSetReportMode
_CrtSetReportFile
尚未呼叫,訊息會顯示如下:
報表類型 | 輸出目的地 |
---|---|
_CRT_WARN |
不會顯示警告文字。 |
_CRT_ERROR |
快顯視窗。 與指定 _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); 時相同。 |
_CRT_ASSERT |
與 _CRT_ERROR 相同。 |
當目的地是偵錯訊息視窗,且使用者選擇 [ 重試 ] 按鈕, _CrtDbgReport
或 _CrtDbgReportW
傳回 1 時。 如果啟用 Just-In-Time 偵錯,這個傳回值會導致這些宏啟動偵錯工具。 如需使用這些宏做為偵錯錯誤處理機制的詳細資訊,請參閱 報告 宏。
有兩個其他巨集可產生偵錯報表。 宏 _ASSERT
會產生報表,但只有當其運算式引數評估為 FALSE
時。 _ASSERTE
與 _ASSERT
完全相同,但在產生的報表中包含失敗的運算式。
需求
Macro | 必要的標頭 |
---|---|
_RPT 巨集 |
<crtdbg.h> |
_RPTF 巨集 |
<crtdbg.h> |
_RPTW 巨集 |
<crtdbg.h> |
_RPTFW 巨集 |
<crtdbg.h> |
如需相容性詳細資訊,請參閱相容性。
程式庫
僅限偵錯版本的 C 執行階段程式庫。
雖然當您包含 crtdbg.h
時可以使用這些宏來執行 ,但應用程式必須與其中一個偵錯程式庫連結,因為這些宏會呼叫其他執行時間函式。
範例
請參閱文章中的 _ASSERT
範例。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應