我在stackoverflow上看到了这个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 );