2009-02-08 80 views
29

我已经开始了一个新项目,并决定确保它在启用/ Wall选项时干净地构建。唯一的问题是不是所有的第三方库(如升压)编译没有警告,所以我使出共用标题中这样做:有没有办法使用编译指示禁用所有警告?

#pragma warning(push) 

#pragma warning(disable:4820) 
#pragma warning(disable:4619) 
#pragma warning(disable:4668) 
#pragma warning(disable:4625) 
#pragma warning(disable:4626) 
#pragma warning(disable:4571) 
#pragma warning(disable:4347) 
#pragma warning(disable:4640) 
#pragma warning(disable:4365) 
#pragma warning(disable:4710) 
#pragma warning(disable:4820) 
#pragma warning(disable:4350) 
#pragma warning(disable:4686) 
#pragma warning(disable:4711) 
#pragma warning(disable:4548) 

#include <boost/array.hpp> 
#include <boost/assert.hpp> 
#include <boost/assign.hpp> 
#include <boost/bind.hpp> 
#include <boost/lexical_cast.hpp> 
#include <boost/filesystem.hpp> 
#include <boost/foreach.hpp> 
#include <boost/format.hpp> 
#include <boost/function.hpp> 
#include <boost/integer.hpp> 
#include <boost/optional.hpp> 
#include <boost/regex.hpp> 
#include <boost/smart_ptr.hpp> 
#include <boost/algorithm/string.hpp> 
#include <boost/tuple/tuple.hpp> 
#include <boost/utility.hpp> 
#include <boost/variant.hpp> 

#pragma warning(pop) 

此作品不够好,但我每次添加新的动力头我必须添加他们产生的任何警告给列表。有没有办法说这段代码禁用所有警告?

回答

40

可以推/弹出警告水平低,像这样:

#pragma warning(push, 0)   

#include <boost/bind.hpp> 
#include <boost/shared_ptr.hpp> 
// ... 

#pragma warning(pop) 

但知道这是不可能禁用所有警告。例如,一些链接器警告无法关闭。

+0

我的意思不是纵容巫术,但在您的评论我在这里看到警告的推/弹出一个1对1的关系。如果我禁用N个警告,我需要调用弹出N次?再次,对不起,以恢复旧线程。 – wheaties 2009-10-27 13:40:55

+2

您禁用的警告数量无关紧要。 “推”的数量必须与“爆裂”的数量相匹配。 – 2009-10-27 15:32:04

4

我以前做过将“W3”选项,而非“墙”然后在每个我自己的源.cpp文件我把

#pragma warning(push, 4) 

顶部毕竟“的#include ...“行然后

#pragma warning(pop) 

作为该文件的最后一行。

通过这种方式,您可以在代码中获得4级警告,而在第三方代码中3级则无法做任何事情。

17
#pragma warning(disable:4820) 
#pragma warning(disable:4619) 
#pragma warning(disable:4668) 

少行....

#pragma warning (disable : 4820 4619 4668) 
相关问题