如何使用 Trace-If 表达式?
为了帮助你了解如何使用 Trace-If 表达式,我们提供了此类表达式的示例,演示了“begin_wpp config”语句的用法和语法。 此示例引用一个函数TRACE_RETURN,如果表达式 FAILED (HR) 为 true,该函数将记录事件。
如果 FAILED (HR) 为 true,则假定存在状态为 ULONG 的源文件,并且将通过调用 TRACE_RETURN (Status) 记录事件。
//MACRO: TRACE_RETURN
//
//begin_wpp config
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
//end_wpp
#define WPP_LEVEL_EXP_PRE(LEVEL, HR) {if (FAILED(HR)) {
#define WPP_LEVEL_EXP_POST(LEVEL, HR) ;}}
#define WPP_LEVEL_EXP_ENABLED(LEVEL, HR) WPP_LEVEL_ENABLED(LEVEL)
#define WPP_LEVEL_EXP_LOGGER(LEVEL, HR) WPP_LEVEL_LOGGER(ERROR)
请注意,在前面的示例中,TRACE_RETURN是在begin_wpp配置和end_wpp行之间定义的。 然后,此定义后跟 PRE/POST 宏以及 ENABLED 和 LOGGER 定义。
begin_wpp配置和end_wpp分隔符定义由预处理器分析的配置块。 WPP 必须扫描包含配置块定义的文件。 此文件是使用 -scan:file.extension 参数指定的。
注意 有关 -scan 和其他 RUN_WPP 选项的信息,请参阅 WPP 预处理器。
以下列表提供有关示例配置块中每个语句的详细信息:
USEPREFIX
定义记录事件时要使用的前缀格式字符串。 在本示例中,使用 STDPREFIX。 有关 STDPREFIX 可用的值,请参阅如何实现更改每个跟踪行上的前缀输出?
USESUFFIX
定义记录事件时要使用的后缀格式字符串。
FUNC
定义跟踪函数的名称和签名。 在示例中, 函数采用一个参数,没有格式字符串。
有关 Trace-If 表达式的另一个示例,请参阅如何实现在 C/C++ 宏中包含跟踪语句?部分。