【问题标题】:Disable /W4 warnings for boost禁用 /W4 警告以进行提升
【发布时间】:2011-03-22 11:26:36
【问题描述】:

如何禁用来自 boost 库的所有 MSVC 警告?

我知道我可以在它们发生的地方禁用特定的警告等......但它会使我的代码变得混乱,如果我使用 boost 宏,那么它们似乎不起作用。我想有一个简单的方法来告诉我的编译器不要给我关于 boost 的警告。这可能吗?

另一方面,我有点惊讶的是 boost 库并没有在内部禁用所有这些警告,以便我们的用户可以“开箱即用”地使用它。

【问题讨论】:

    标签: c++ visual-studio-2010 boost warnings


    【解决方案1】:

    他们非常努力地避免警告,但一些编译器会警告形式上正确的代码,只是有点“可疑”。如果您更改代码以使警告静音,则另一个编译器可能会针对该代码发出警告!

    对于 Boost 代码和各种编译器有一个警告策略 https://svn.boost.org/trac/boost/wiki/Guidelines/WarningsGuidelines

    他们还特别注意不要禁用警告,因为您的代码中的某些部分可能警告实际上是正确的。如果 Boost 禁用警告,您可能在代码中找不到错误!

    【讨论】:

      【解决方案2】:

      您可以通过更改默认属性页来禁用所有个项目的警告:

      • 打开任何项目。
      • 点击 查看-> 物业经理。
      • 在 物业经理(可能沿 左栏),展开项目,然后 展开其中一个配置文件,然后 双击其中一个类别 您的所有项目都将使用: Microsoft.Cpp.Win32.user, 应用程序,或者可能是 Core Windows 图书馆。
      • 这会调出 Properties 页面,但适用于您编写或将要编写的所有代码。设置 适当的预处理器定义 并禁用 /wp64 或任何你 需要为单个项目做。

      由于可能不希望为所有项目禁用这些警告,因此您似乎可以禁用 visual_c.hpp 中的警告,如下所述:Boost warnings with VC++ 9。但是每次更新库时都必须进行更改。

      【讨论】:

        【解决方案3】:

        首先想到的是创建一个特殊的头文件来放置所有的 Boost #includes。这些#includes 应该被#pragma 块包围

        #pragma warning(push, 0)        
        
        #include <boost/bimap.hpp>
        #include <boost/function.hpp>
        
        #pragma warning(pop)
        

        这种方式的缺点:一些编译时效率低下

        【讨论】:

        • 这样的问题是当您使用标头中的模板时会出现一些警告。到那时,警告再次出现。
        • @Bo:我以前不知道。我想知道为什么会这样。你是这个原因吗?据我了解,patch 修复了 Boost.Thread 的问题
        猜你喜欢
        • 1970-01-01
        • 2020-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-09
        • 2018-10-06
        • 2020-11-18
        • 2012-07-27
        相关资源
        最近更新 更多