_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
範例。