2012-09-24 40 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模塊包圍它? –