2009-02-08 49 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) 
相關問題