Я видел этот отладочный отпечаток для C ++ здесь на стеке потока но я не могу это комментировать (я новичок):
#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 и потоковой отладочной печати?
Это может быть доработано, но попробуйте это в качестве отправной точки:
#ifdef DEBUG
#define LOG_DEBUG( stuff ) { std::cout << stuff << std::endl; }
#else
#define LOG_DEBUG( stuff )
#endif
Тогда позже в коде:
LOG_DEBUG( __FILE__ << " bla bla bla " << foo );
Других решений пока нет …