Отладочная печать C++ в поток генерирует предупреждения

Я видел эту распечатку отладки для C++ здесь на stackru, но я не могу комментировать ее (я новичок):

#ifdef DEBUG
#define dout cout
#else
#define dout 0 && cout
#endif

Используется так:

dout << "in foobar with x= " << x << " and y= " << y << '\n';

На первый взгляд мне понравилось, но я компилирую с -Wall, поэтому я получаю много предупреждений, таких как

test1.cc:30:46: предупреждение: оператор не имеет эффекта [-Wunused-value]

Есть ли способ примирить -Wall и потоковой отладочной печати?

1 ответ

Это может быть доработано, но попробуйте это в качестве отправной точки:

#ifdef DEBUG
#define LOG_DEBUG( stuff ) { std::cout << stuff << std::endl; }
#else
#define LOG_DEBUG( stuff )
#endif

Тогда позже в коде:

LOG_DEBUG( __FILE__ << " bla bla bla " << foo );
Другие вопросы по тегам