產生偵錯報表,以追蹤應用程式進度 (僅限偵錯版本)。 後 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 範例。