_CrtSetReportFile
使用 _CrtSetReportMode
指定 _CRTDBG_MODE_FILE
之後,您可以指定要接收訊息文字的檔案控制代碼。 _CrtSetReportFile
也由 _CrtDbgReport
、_CrtDbgReportW
使用,以指定文字的目的地 (僅限偵錯版本)。
語法
_HFILE _CrtSetReportFile(
int reportType,
_HFILE reportFile
);
參數
reportType
報表類型:_CRT_WARN
、_CRT_ERROR
和 _CRT_ASSERT
。
reportFile
reportType
的新報表檔案。
傳回值
成功完成時,_CrtSetReportFile
會傳回為 reportType
中指定之報表類型定義的先前報表檔案。 如果針對 reportType
傳入的值無效,則此函式會叫用無效的參數處理常式,如參數驗證中所述。 若允許繼續執行,errno
會設為 EINVAL
,而函式會傳回 _CRTDBG_HFILE_ERROR
。 如需詳細資訊,請參閱errno
, _doserrno
, _sys_errlist
和_sys_nerr
.
備註
_CrtSetReportFile
可搭配 _CrtSetReportMode
函式使用,以定義 _CrtDbgReport
所產生之特定報表型別的一或多個目的地。 當您呼叫 _CrtSetReportMode
以指派特定報表型別的 _CRTDBG_MODE_FILE
報告模式時,也呼叫 _CrtSetReportFile
來指定目的地檔案或資料流。 若未定義 _DEBUG
,將會在前置處理期間移除對 _CrtSetReportFile
的呼叫。
下表顯示 reportFile
的可用選項及 _CrtDbgReport
的結果行為。 這些選項在 Crtdbg.h 中定義為位元旗標。
檔案控制代碼
將作為訊息目的地的檔案控制代碼。 不會嘗試驗證此控制代碼的有效性。 您必須開啟和關閉檔案控制代碼。 例如:
HANDLE hLogFile; hLogFile = CreateFile("c:\\log.txt", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, hLogFile); _RPT0(_CRT_WARN,"file message\n"); CloseHandle(hLogFile);
_CRTDBG_FILE_STDERR
將訊息寫入至可如下重新導向的
stderr
:freopen( "c:\\log2.txt", "w", stderr); _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); _RPT0(_CRT_ERROR,"1st message\n");
_CRTDBG_FILE_STDOUT
將訊息寫入至您可以重新導向的
stdout
。_CRTDBG_REPORT_FILE
傳回目前的報表模式。
您可以分別控制每個報表型別分別使用的報表檔案。 例如,您可以透過 stderr
指定 _CRT_ERROR
報表的 reportType
,而透過使用者定義的檔案控制代碼或資料流來指定 _CRT_ASSERT
報表的 reportType
。
需求
常式 | 必要的標頭 | 選擇性標頭 |
---|---|---|
_CrtSetReportFile |
<crtdbg.h> | <errno.h> |
通用 Windows 平台 (UWP) 應用程式中不支援主控台。 與主控台 stdin
、stdout
和 stderr
相關聯的標準資料流控制代碼必須重新導向,之後 C 執行階段函式才能在 UWP 應用程式中使用它們。 如需相容性詳細資訊,請參閱相容性。
程式庫:僅限偵錯版本的 CRT 程式庫功能。