_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调用无效参数处理程序作为中所述参数验证。 如果允许执行继续,此函数可设置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 | 创建一个消息框显示消息以及中止,重试,并忽略按钮。 |
_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> |