[英]VC++ 2010: Compiling with /Wall
我想用/ Wall编译我的项目。
当我这样做时,我从第三方代码(boost库,其他系统头文件)得到大量警告。 我包含这些第三方头文件的唯一地方是在我的预编译头文件( 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
(boost.asio)等文件中收到数百条警告。
如何在启用所有警告的情况下编译自己的代码时,如何确保编译警告级别为3的所有第三方代码?
第三方代码的修改频率较低,因此最好将所有这些包含在您的StdAfx.h中,然后您的上述解决方案将禁止其警告。
或者创建一些其他包装器头文件,使用上面的pragma围绕实际包含到您使用的库。
我想不出第三种方式。 我推说他们都在stdafx( 以及他们实际上是包括在内,也记得stdafx是一种优化-不仔细选择的替代品,包括你的源文件中)
/ W4比/ Wall更逼真。 我经常使用带/ W4的stl,tr1和windows标头。 我不知道提升。
使用#pragma包装标头的原因还不够,在实例化模板或扩展宏(或者甚至可能使用内联)时会生成一些警告。
检查文件所包含的所有内容。可能是其中一个可能会将警告重置为默认状态。 我已经看到了VC ++附带的MFC或ATL标题 - 一些警告被禁用,然后使用“默认”调用说明符而不是使用推/弹对重新启用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.