Поделиться через


Можно ли использовать перечисления в коде трассировки?

Перечисления можно использовать для отображения значимых терминов в сообщениях трассировки вместо отображения целочисленных значений, которые пользователи должны декодировать.

Например, определите в коде следующее перечисление:

#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 в макрос RUN_WPP, который вызывает препроцессор WPP. Это уведомляет WPP о необходимости поиска данных конфигурации в указанном файле. Пример:

RUN_WPP -scan:trace.c