_CrtSetReportMode

_CrtSetReportMode

指定的目标或目标的生成的特定报表类型 _CrtDbgReport和调用任何宏_CrtDbgReport、 _CrtDbgReportW,如_ASSERT、 _ASSERTE、_ASSERT_EXPR 宏_ASSERT、 _ASSERTE、 _ASSERT_EXPR 宏_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调用无效参数处理程序作为中所述参数验证。 如果允许执行继续,此函数可设置errnoEINVAL并返回-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 创建一个消息框显示消息以及中止重试,并忽略按钮。
_CRTDBG_REPORT_MODE 返回reportMode指定reportType: 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 );

此外,可以分别控制报告模式和每个报告类型的模式。 例如,它是可以指定reportType_CRT_WARN会发送到输出调试字符串,而 _CRT_ASSERT是使用调试消息窗口显示并发送到stderr,如前面所示。

要求

例程所返回的值 必需的标头 可选标头
_CrtSetReportMode <crtdbg.h> <errno.h>
posted @ 2019-06-24 17:39  睿阳  阅读(1096)  评论(0编辑  收藏  举报