Я унаследовал код, который содержит макросы отладки.
#define DEBUG_LEVEL_NONE 0
#define DEBUG_LEVEL_ONE 1
#define DEBUG_LEVEL_TWO 2
#if DEBUG_LEVEL == DEBUG_LEVEL_NONE
#define DEBUG(print_level, str)
#else /* DEBUG_LEVEL */
#define DEBUG(print_level, str) \
{ \
if (DEBUG_LEVEL >= print_level) \
{ \
printf("%-25s %4d %2d:", __FILE__, __LINE__, print_level); \
printf(str); \
fflush(NULL); \
} \
}
#endif /* DEBUG_LEVEL */
Все работает нормально, но я бы хотел избежать лишнего кода и проверки на более низкие уровни отладки.
Я знаю, что не могу поместить тесты препроцессора в определения макросов. Есть ли способ получить эффект вроде
#define DEBUG(print_level, str) \
{ \
#if (DEBUG_LEVEL >= print_level) \
printf("%-25s %4d %2d:", __FILE__, __LINE__, print_level); \
printf(str); \
fflush(NULL); \
#endif \
}
спасибо