Share via


_RPT, _RPTF, _RPTW, _RPTFW

通过生成调试报告跟踪应用程序的进程(仅限调试版本)。 n后缀指定args中的参数个数,它可以是 0、1、2、3、4 或 5。

语法

_RPTn(
   reportType,
   format,
   ...[args]
);
_RPTFn(
   reportType,
   format,
   [args]
);
_RPTWn(
   reportType,
   format
   [args]
);
_RPTFWn(
   reportType,
   format
   [args]
);

参数

reportType
报告类型:_CRT_WARN_CRT_ERROR_CRT_ASSERT

format
用于创建用户消息的格式控件字符串。

args
format 使用的替换参数。

注解

所有这些宏都采用reportTypeformat参数。 此外,它们还可能需最多四个附加参数,由追加到宏名称的数字表示。 例如,_RPT0_RPTF0不采用更多参数,_RPT1_RPTF1采用arg1_RPT2_RPTF2采用arg1arg2等。

_RPT_RPTF宏类似于printf函数,因为它们可用于跟踪调试过程中的应用程序的进度。 不过,这些宏比printf更灵活,因为它们无需包含在#ifdef语句中,以防止在零售版本的应用程序中调用它们。 这种灵活性是通过使用_DEBUG宏实现的;_RPT_RPTF宏仅在定义了_DEBUG标志时可用。 未定义 _DEBUG 时,会在预处理过程中删除对这些宏的调用。

_RPTW_RPTFW 宏是这些宏的宽字符版本。 它们类似于 wprintf 并将宽字符字符串用作参数。

_RPT宏调用_CrtDbgReport函数,生成包含用户消息的调试报告。 _RPTW 宏调用 _CrtDbgReportW 函数,生成具有宽字符的同一个报告。 除了用户消息以外,_RPTF_RPTFW 宏还将创建包含调用报告宏所在的源文件和行号的调试报告。 通过使用由printf函数定义的相同规则将arg[n]参数替换为format字符串,以创建用户消息。

_CrtDbgReport_CrtDbgReportW 会基于当前报告模式以及为 reportType 定义的文件,生成调试报告并确定其目标。 _CrtSetReportMode_CrtSetReportFile 函数用于为每种报告类型定义目标。

如果调用_RPT宏,但不调用_CrtSetReportMode_CrtSetReportFile,则显示以下消息:

报告类型 输出目标
_CRT_WARN 不显示警告文本。
_CRT_ERROR 弹出窗口。 如果指定了 _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW);,则相同。
_CRT_ASSERT _CRT_ERROR 相同。

当目标为调试消息窗口且用户选择“重试”按钮时,_CrtDbgReport_CrtDbgReportW返回 1。 如果启用了实时 (JIT) 调试,此返回值会导致这些宏启动调试器。 有关将这些宏用作调试错误处理机制的详细信息,请参阅用于报告的宏

另外还有其他两个生成调试报告的宏: _ASSERT宏,但仅在其表达式参数计算结果为FALSE时生成报告。 _ASSERTE宏与_ASSERT非常类似,但会在生成的报告中包含失败的表达式。

要求

必需的标头
_RPT <crtdbg.h>
_RPTF <crtdbg.h>
_RPTW <crtdbg.h>
_RPTFW <crtdbg.h>

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

仅限 C 运行时库的调试版本。

虽然这些宏在包含crtdbg.h时可用,但要运行,应用程序必须链接其中一个调试库,因为这些宏会调用其他运行时函数。

示例

请参阅 _ASSERT 文章中的示例。

另请参阅

调试例程