Share via


_CrtSetReportMode

指定 所 _CrtDbgReport 產生之特定報表類型的目的地或目的地,以及任何呼叫 _CrtDbgReport 的宏, _CrtDbgReportW 例如 _ASSERT_ASSERTE_ASSERT_EXPR_RPT 、、 _RPTF_RPTW_RPTFW (僅限偵錯版本)。

語法

int _CrtSetReportMode(
   int reportType,
   int reportMode
);

參數

reportType
報表類型:_CRT_WARN_CRT_ERROR_CRT_ASSERT

reportMode
reportType 的一或多個新報表模式。

傳回值

成功完成時,_CrtSetReportMode 會傳回 reportType 中指定之報表類型的先前報表模式。 如果為 傳入 reportType 不正確值,或為 reportMode 指定了無效模式, _CrtSetReportMode 則會叫用不正確參數處理常式,如參數驗證 中所述 。 若允許繼續執行,此函式會將 errno 設為 EINVAL,並傳回 -1。 如需詳細資訊,請參閱errno, _doserrno, _sys_errlist_sys_nerr.

備註

_CrtSetReportMode指定 _CrtDbgReport 的輸出目的地。 由於巨集 _ASSERT_ASSERTE_RPT_RPTF 呼叫 _CrtDbgReport,因此 _CrtSetReportMode 會指定使用這些巨集指定之文字的輸出目的地。

未定義 時 _DEBUG ,會在前置處理期間移除 對 的 _CrtSetReportMode 呼叫。

如果您未呼叫 _CrtSetReportMode 來定義訊息的輸出目的地,則下列預設值會生效:

  • 判斷提示失敗及錯誤會導向到偵錯訊息視窗。

  • Windows 應用程式的警告會傳送至偵錯工具的輸出視窗。

  • 不會顯示來自主控台應用程式的警告。

下表列出 中 Crtdbg.h 定義的報表類型。

報表類型 描述
_CRT_WARN 不需要立即注意的警告、訊息和資訊。
_CRT_ERROR 錯誤、無法復原的問題和需要立即注意的問題。
_CRT_ASSERT 判斷提示失敗 (評估為 FALSE 的判斷提示運算式)。

_CrtSetReportMode 函式會將 reportMode 中指定的新報表模式指派給 reportType 中指定的報表類型,並傳回先前為 reportType 定義的報表模式。 下表列出 reportMode 的可用選項及 _CrtDbgReport 的結果行為。 這些選項在 Crtdbg.h 中定義為位元旗標。

報表模式 _CrtDbgReport 行為
_CRTDBG_MODE_DEBUG 將訊息寫入至偵錯工具的輸出視窗。
_CRTDBG_MODE_FILE 將訊息寫入至使用者提供的檔案控制代碼。 _CrtSetReportFile 應該呼叫 以定義要作為目的地的特定檔案或資料流程。
_CRTDBG_MODE_WNDW 建立訊息方塊以顯示訊息, 以及 [中止 ]、 [重試 ] 和 [忽略 ] 按鈕。
_CRTDBG_REPORT_MODE 傳回指定之 reportTypereportMode

1 _CRTDBG_MODE_FILE

2 _CRTDBG_MODE_DEBUG

4 _CRTDBG_MODE_WNDW

每個報表類型可使用一個、兩個或三個模式進行報告,或完全不使用任何模式。 因此,可以針對單一報表類型定義多個目的地。 例如,下列程式碼片段會將判斷提示失敗同時傳送至偵錯訊息視窗和 stderr

_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_WNDW );
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );

此外,您可以分別控制每個報表類型的報告模式或模式。 例如,您可以指定 reportType_CRT_WARN 的 移至輸出偵錯字串的 ,同時 _CRT_ASSERT 使用偵錯訊息視窗顯示,並傳送至 stderr ,如先前所示。

需求

常式 必要的標頭 選擇性標頭
_CrtSetReportMode <crtdbg.h> <errno.h>

如需相容性詳細資訊,請參閱相容性

程式庫: 僅偵錯 C 執行時間程式庫 的版本。

另請參閱

偵錯常式