我想用/ Wall编译我的项目。
当我这样做时,我从第三方代码(增强库,其他系统头文件)中收到大量警告。我包含这些第三方头文件的唯一位置是在我的预编译头文件(stdafx.h
)中。
我试过了(在stdafx.h
)
#pragma warning(push,3)
// include all the third-party headers here
#pragma warning(pop)
编译警告级别为3的所有第三方代码。
但是,我仍会收到来自math.h
,xmemory
,vector
,string_generator.hpp
(boost.uuid),placeholders.hpp
等文件的数百条警告。 asio),...
如何在启用所有警告的情况下编译自己的代码时,如何确保编译警告级别为3的所有第三方代码?
答案 0 :(得分:1)
第三方代码的修改频率较低,因此最好将所有这些代码包含在您的StdAfx.h中,然后您的上述解决方案将禁止他们发出警告。
或者创建一些其他包装器头文件,这些文件使用上面的pragma围绕您使用的库的实际包含。
我想不出第三种方式。我说在stdafx(和中实际包含它们的所有内容)中都会将它们全部推出。请记住,stdafx是一种优化 - 不是替代仔细选择,包括在源文件中)
答案 1 :(得分:1)
/ W4比/ Wall更逼真。我经常使用带/ W4的stl,tr1和windows标头。我不知道提升。
使用#pragma包装标头的原因还不够,在实例化模板或扩展宏时(甚至可能使用内联)会生成一些警告。
答案 2 :(得分:0)
检查文件所包含的所有内容。可能是其中一个可能会将警告重置为默认状态。我已经看到这个带有VC ++附带的MFC或ATL标头 - 一些警告被禁用,然后使用“默认”调用说明符重新启用,而不是使用推/弹对。