Share via


_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。有关详细信息,请参阅平台调用示例

请参见

参考

调试例程