3

我在 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 和面向流的调试打印?

4

1 回答 1

2

这可以进一步细化,但尝试以此为起点:

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

然后在后面的代码中:

LOG_DEBUG( __FILE__ << " bla bla bla " << foo );
于 2012-09-24T09:09:52.457 回答