VC ++ 2010:用/ Wall编译

时间:2011-05-23 11:19:23

标签: c++ compiler-warnings

我想用/ Wall编译我的项目。

当我这样做时,我从第三方代码(增强库,其他系统头文件)中收到大量警告。我包含这些第三方头文件的唯一位置是在我的预编译头文件(stdafx.h)中。

我试过了(在stdafx.h

#pragma warning(push,3)
    // include all the third-party headers here
#pragma warning(pop)

编译警告级别为3的所有第三方代码。

但是,我仍会收到来自math.hxmemoryvectorstring_generator.hpp(boost.uuid),placeholders.hpp等文件的数百条警告。 asio),...

如何在启用所有警告的情况下编译自己的代码时,如何确保编译警告级别为3的所有第三方代码?

3 个答案:

答案 0 :(得分:1)

第三方代码的修改频率较低,因此最好将所有这些代码包含在您的StdAfx.h中,然后您的上述解决方案将禁止他们发出警告。

或者创建一些其他包装器头文件,这些文件使用上面的pragma围绕您使用的库的实际包含。

我想不出第三种方式。我说在stdafx(中实际包含它们的所有内容)中都会将它们全部推出。请记住,stdafx是一种优化 - 不是替代仔细选择,包括在源文件中)

答案 1 :(得分:1)

/ W4比/ Wall更逼真。我经常使用带/ W4的stl,tr1和windows标头。我不知道提升。

使用#pragma包装标头的原因还不够,在实例化模板或扩展宏时(甚至可能使用内联)会生成一些警告。

答案 2 :(得分:0)

检查文件所包含的所有内容。可能是其中一个可能会将警告重置为默认状态。我已经看到这个带有VC ++附带的MFC或ATL标头 - 一些警告被禁用,然后使用“默认”调用说明符重新启用,而不是使用推/弹对。