是否可以在跟踪代码中使用枚举?

可以使用枚举在跟踪消息中显示有意义的术语,而不是显示用户必须解码的整数值。

例如,在代码中定义以下枚举:

#define SPECIALDAY  0xF0000000
enum _wday {
  sunday = 0,
  monday = 55,
  tuesday = 3,
  wednesday = 1 | SPECIALDAY  ,
  thursday =  7 | SPECIALDAY,
  friday =  5,
  saturday = 6
};

若要在跟踪消息中使用 枚举,请将以下配置数据添加到源文件。 此代码指示 WPP 提取枚举的符号信息,并使用在显示枚举记录值时定义的名称。

// begin_wpp config 
// CUSTOM_TYPE(dayset, ItemEnum(_wday) );
// end_wpp

然后,可以在跟踪消息的格式字符串中使用 dayset 自定义类型。 例如:

 _wday p = wednesday;

 DoTraceMessage(NOISE " %!dayset!", p);

最后,由于将配置数据添加到非配置文件 (非 .ini 文件) ,因此请将 -scan 参数添加到调用 WPP 预处理器的RUN_WPP宏。 这会通知 WPP 在指定文件中查找配置数据。 例如:

RUN_WPP -scan:trace.c