Можно ли использовать перечисления в коде трассировки?
Перечисления можно использовать для отображения значимых терминов в сообщениях трассировки вместо отображения целочисленных значений, которые пользователи должны декодировать.
Например, определите в коде следующее перечисление:
#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