_CrtSetReportFile
在指定 _CRTDBG_MODE_FILE之後和 _CrtSetReportMode,您可以指定檔案控制代碼收到訊息文字。 _CrtDbgReport _CrtDbgReportW 也使用於**_CrtSetReportFile** 指定文字的目的端 (請僅偵錯版本)。
_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 旗標,這些選項中定義。
file handle
將是訊息的目標檔案的控制代碼。 已嘗試驗證控制代碼的有效性。 您必須開啟和關閉控制代碼檔案。 例如: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
傳回目前報表模式。
每個報表型別使用的報告檔可以單獨控制。 例如,指定可能的 _CRT_ERRORreportType 向 stderr報告功能,則為 _CRT_ASSERT ,而 reportType 向使用者自訂的檔案控制代碼或資料流中會報告。
需求
程序 |
必要的標頭檔 |
選擇性標頭 |
---|---|---|
_CrtSetReportFile |
<crtdbg.h> |
<errno.h> |
主控台 Windows 市集 應用程式不支援。 標準資料流控制代碼與主控台, stdin, stdout和 stderr,在這種情況下, C 執行階段函式在 Windows 市集 應用程式之前,可以使用它們必須重新導向。 如需詳細資訊,請參閱介紹中的 相容性 。
程式庫: 僅偵錯 CRT 程式庫功能 版本。
範例
請參閱 report。
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例。