Нужно исключить отладочные printf() из программы, применяя константу препроцессора.
Обрамлять каждый вызов printf()
#if DEBUG == 1
printf();
#endif
не хочется. Можно ли сделать что-то типа:
#define printf(x,y) (if DEBUG == 1 printf(x,y) endif)
#if внутри макроопределений запрещены. Есть ли альтернатива?
Ответ
Можно определять макрос по разному в зависимости от значения DEBUG
#if DEBUG==1
#define printf_d(...) printf(__VA_ARGS__);
#else
#define printf_d(...)
#endif
Но лучше сделать это немного по другому, проверяя не значение, а факт наличия макроопределения:
#ifdef DEBUG
// . . .
Такой подход позволяет включить режим отладки простым указанием имени проверяемого макроса в Make-файле или даже в параметрах команды сборки.
Комментариев нет:
Отправить комментарий