LINUX.ORG.RU

История изменений

Исправление ratatosk, (текущая версия) :

Твой вариант в любом случае плох тем, что даже есть DEBUG не определен, аргументы будут вычислены

Что-то типа (не тестировал)

#ifdef DEBUG
#define DEBUG_PRINT(x) do {std::cerr << x;} while (0)
#else
#define DEBUG_PRINT(x)
#endif
Если приспичивает иметь синтаксис вида
DEBUG_PRINT() << "blabla"; 
то можно сделать что-то типа такого трюка (не тестировал):
#ifdef DEBUG
#define DEBUG_PRINT()\
  if (true) std::cerr 
#else
#define DEBUG_PRINT()\
  if (false) std::cerr 
#endif

Исходная версия ratatosk, :

Твой вариант в любом случае плох тем, что даже есть DEBUG не определен, аргументы будут вычислены

Что-то типа (не тестировал)

#ifdef DEBUG
#define DEBUG_PRINT(x) do {std::cerr << x;} while (0)
#else
#define DEBUG_PRINT(x)
#endif
Если приспичивает иметь синтаксис вида
DEBUG_PRINT() << "blabla"; 
то можно сделать что-то типа такого трюка (не тестировал):
#ifdef DEBUG
#define DEBUG_PRINT()\
  if (true) std::cerr 
#else 
  if (false) std::cerr 
#endif