_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_ASSERTreportType 移至另一个用户定义的文件句柄或流报告。

要求

实例

必需的标头

选项标头

_CrtSetReportFile

<crtdbg.h>

<errno.h>

控件个在 Windows 应用商店 apps 不受支持。标准流处理与控件个,stdin,stdout和 stderr,在 C 运行时函数在 Windows 应用商店 apps 之前,可以使用它们必须重定向。有关更多兼容性信息,请参见中介绍的 兼容性

库: 只调试 CRT库功能 的版本。

示例

请参见 report

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例

请参见

参考

调试实例