2012-09-24 17 views
3

我看到这个调试打印为C++ here on 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-VA lue]

有没有一种方法来协调-Wall和面向流的调试打印?

+0

您可以用'#pragma'禁用特定的警告,你都知道 –

+0

你是在暗示一个全局禁用或者是否有方法将其纳入宏? – Mankka

+0

它在文件范围内工作,IIRC –

回答

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); 
+0

好戏!为什么你用while模块包围它? –