共用方式為


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

另請參閱

偵錯常式