_CrtSetReportMode

指定目的地或是由 _CrtDbgReport 生成的特定报告类型的目的地和任意调用 _CrtDbgReport、_CrtDbgReportW 的宏命令,例如 _ASSERT、_ASSERTE 宏_ASSERT、_ASSERTE 宏_RPT、_RPTF、_RPTW、_RPTFW 宏_RPT、_RPTF、_RPTW、_RPTFW 宏 (只限缺陷版本)。

int _CrtSetReportMode( 
   int reportType,
   int reportMode 
);

参数

  • reportType
    报告类型:_CRT_WARN_CRT_ERROR_CRT_ASSERT

  • reportMode
    新报表模式或 reportType模式。

返回值

成功完成后,_CrtSetReportMode 返回之前报告模式或是 reportType 指定的报告模式。 如果作为 reportType 的无效值传递,或是被指定为reportMode 的无效模式,将如 参数验证 描述**_CrtSetReportMode** 调用无效参数处理程序。 如果继续执行,这个函数设置errno为EINVAL 并返回-1。 有关详细信息,请参阅errno、_doserrno、_sys_errlist 和 _sys_nerr

备注

_CrtSetReportMode 指定 _CrtDbgReport 的输出目的地。 因为宏命令 _ASSERT_ASSERTE, _RPT_RPTF 调用 _CrtDbgReport_CrtSetReportMode 指定特定的宏指令文本的输出目的地。

_DEBUG 未定义时, _CrtSetReportMode 调用在预处理期间被移除。

如果没有调用 _CrtSetReportMode 定义消息的输出目的地,那么以下的默认情况有效:

  • 断言失败和错误订向到调试消息窗口。

  • 来自 Windows 应用程序的警告被发送到调试器的输出窗口中。

  • 不会显示来自控制台应用程序的警告。

下表列出了在 Crtdbg.h 定义的报表类型。

报告类型

描述

_CRT_WARN

无需立即关注警告、消息和信息。

_CRT_ERROR

需要立即关注错误、不可恢复的问题和议题。

_CRT_ASSERT

断言失败(断言表达式值为 FALSE)。

_CrtSetReportMode 函数分配 reportMode 中指定的新报告模式到 reportType 指定的报告类型中,并且返回之前 reportType 定义的报告模式。 下表列出了 reportMode 的可用选项以及 _CrtDbgReport 的结果行为: 这些选项在Crtdbg.h定义为位标志。

报告模式

_CrtDbgReport 行为

_CRTDBG_MODE_DEBUG

消息写入到调试器的输出窗口中。

_CRTDBG_MODE_FILE

写入消息到一个用户提供的文件处理程序中。 应调用 _CrtSetReportFile 定义指定的文件或作为目的地使用的流。

_CRTDBG_MODE_WNDW

创建消息框连同AbortRetryIgnore 按钮显示该信息。

_CRTDBG_REPORT_MODE

返回指定的 reportType 的 reportMode:

1   _CRTDBG_MODE_FILE

2   _CRTDBG_MODE_DEBUG

4   _CRTDBG_MODE_WNDW

可以使用一个,两个或三个模式或无模式报告每个报表类型。 因此,对单个报表类型定义多个目的地是有可能的。 例如,以下的代码片段引起的断言失败被发送到缺陷消息窗口和 stderr

_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_WNDW );
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );

此外,可以单独控制报告模式或模式每个报告类型。 例如,有可能指定 _CRT_WARN 的一个 reportType 发送到输出缺陷字符串,而如之前所解释的,使用缺陷消息窗口显示 _CRT_ASSERT 和发送到 stderr

要求

例程

必需的标头

可选标头

_CrtSetReportMode

<crtdbg.h>

<errno.h>

有关兼容性的详细信息,请参阅简介中的兼容性

库: 只适用于调试版本 CRT 库功能

.NET Framework 等效项

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

请参见

参考

调试例程