_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
    ");
    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
    ");
    
  • _CRTDBG_FILE_STDOUT

    将消息写入stdout,可进行重定向。

  • _CRTDBG_REPORT_FILE

    返回当前报告模式。

可以单独控制每种报告类型所使用的报表文件。 例如,它是可以指定reportType_CRT_ERROR报告给stderr,而reportType_CRT_ASSERT报告给用户定义的文件句柄或流。

要求

例程所返回的值 必需的标头 可选标头
_CrtSetReportFile <crtdbg.h> <errno.h>
原文地址:https://www.cnblogs.com/fr-ruiyang/p/11078384.html