_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
返回当前报告模式。
可以单独控制每种报表类型所使用的报表文件。 例如,可以指定 _CRT_ERROR
的 reportType
通过 stderr
进行报告,而 _CRT_ASSERT
的 reportType
通过用户定义的文件句柄或流进行报告。
要求
例程 | 必需的标头 | 可选标头 |
---|---|---|
_CrtSetReportFile |
<crtdbg.h> | <errno.h> |
通用 Windows 平台 (UWP) 应用中不支持控制台。 与控制台、stdin
、stdout
和 stderr
关联的标准流句柄必须重定向,然后 C 运行时函数才能在 UWP 应用中使用它们。 有关兼容性的详细信息,请参阅 兼容性。
库:仅限 CRT 库功能的调试版本。