Share via


_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 使用的替換引數。

備註

所有這些宏都會採用 reportTypeformat 參數。 此外,它們最多可能需要四個引數,以附加至宏名稱的數位表示。 例如, _RPT0_RPTF0 不再接受引數, _RPT1_RPTF1 採用 arg1_RPTF2_RPT2arg2arg1 等等。

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

另請參閱

偵錯常式