код имеет ряд следующих разделов:Макросы препроцессора: как вставить аргументы?
int filter;
#ifdef INPUTFILTER_FOO
LOG4CXX_DEBUG(log, "FOO filter used");
filter = F_FOO;
#endif
Они используются несколько раз в коде (используются для обеспечения ввода/вывода, Поддержка потоков и т.д. для всех конфигураций тестирования), Circa они необходимы для отладки, но сделайте код выглядеть суровым, захотите заменить его макросами, по одному для каждого пространства имен category_type.
Итак, хочет расширить следующее:
< MACROSTUFFBAZ(log2, stuff, "BAZ")
- текстовая часть является уникальной для каждого класса, поэтому она должна быть включена в макросе тоже.
к:
#ifdef INPUTSTUFF_BAZ
LOG4CXX_DEBUG(log2, "BAZ stuff used");
stuff = S_BAZ;
#endif
Для определения макросов, планируют использовать это:
debug.hpp:
#ifdef INPUTSTUFF_BAZ
#define MACROSTUFFBAZ ...
#else
#define MACROSTUFFBAZ
.. no code!
#endif
#endif
(по крайней мере, это даст четкое представление о вещах, в настоящее время проходят проверку, не видя их вокруг кода)
Вы не знаете о 'filter = F_FOO' и' stuff = S_BAZ': когда это 'S_'? Когда это 'F_'? Это зависит от макропараметров? – icecrime
@icecrime, это просто другие макроопределенные значения (префикс имени файла, счетчики, задержки и т. Д.). Они не зависят от параметров, а определяются макросом. –