_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 |
傳回指定之 reportType 的 reportMode :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 執行階段程式庫。