_CrtSetReportFile
_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 中将这些选项定义为位标志。
-
文件句柄
将作为消息目标的文件的句柄。 不会尝试验证该句柄的有效性。 必须打开并关闭该文件的句柄。 例如:
C复制
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,可定向,如下所示:
C复制
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
返回当前报告模式。
可以单独控制每种报告类型所使用的报表文件。 例如,它是可以指定reportType的 _CRT_ERROR报告给stderr,而reportType 的 _CRT_ASSERT报告给用户定义的文件句柄或流。
要求
例程所返回的值 | 必需的标头 | 可选标头 |
---|---|---|
_CrtSetReportFile | <crtdbg.h> | <errno.h> |