_CrtSetReportFile
在您使用 _CrtSetReportMode 指定 _CRTDBG_MODE_FILE後,您可以指定檔案控制代碼收到訊息文字。 _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_ERROR reportType 向 stderr報告功能,則為 _CRT_ASSERT ,而 reportType 向使用者自訂的檔案控制代碼或資料流中會報告。
需求
常式 |
必要的標頭 |
選擇性標頭 |
---|---|---|
_CrtSetReportFile |
<crtdbg.h> |
<errno.h> |
Windows 市集 應用程式不支援主控台。 與主控台關聯的標準資料流控制代碼 (stdin、stdout 和 stderr) 必須重新導向,然後 C 執行階段函式才能在 Windows 市集 應用程式中使用它們。 如需詳細的相容性資訊,請參閱相容性。
程式庫: 僅 CRT 程式庫功能 之偵錯版本。
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例。