Хочу чтобы все дебаг-сообщения включались если сделано один-единственный дефайн. У меня есть такое:
DEBUG("program started\n");
и есть такое:
#define DEBUG(str) \
#ifdef __DEBUG__ \
printf("DEBUG: " str); \
#endif
и програма должна выводить "DEBUG: program started" только если до параметров компилятора добавить
-D__DEBUG__. Но во-первых это не работает, а во-вторых тут сделано только на 1 аргумент, а мне бы на любое число
error: '#' is not followed by a macro parameter
UPD:
Работает если так:
#define DEBUG(...) \
printf("DEBUG: " __VA_ARGS__);
но мне надо отключать дебажилку. По этому сделал так:
#ifdef __DEBUG__
#define DEBUG(...) printf("DEBUG: " __VA_ARGS__);
#endif
но тут если не делать дефайна __DEBUG__ то получаю ошибку ведь DEBUG получается неопределен. Как тогда в противном случае можно определить DEBUG чтобы он ничего не делал?
#ifdef __DEBUG__
#define DEBUG(...) printf("DEBUG: " __VA_ARGS__);
#else
// Что тут писать чтобы объявить DEBUG() который ничего не делает?
#endif