【问题标题】:Changing Warning Level for 3rd Party Libs更改第 3 方库的警告级别
【发布时间】:2011-04-26 18:37:17
【问题描述】:

我通常喜欢在 Visual Studio 中针对 4 级警告进行编译,并将所有警告视为错误。问题是,Ogre3D 编译时没有使用 3 级警告(FBX SDK 或 OIS 都不是,我也在使用),这造成了一个问题,因为现在我有大量来自 Ogre3D 库的警告,这些警告现在被视为错误。到目前为止,我一直在 3 级编译,但这让我非常不安。有什么方法可以禁用我无法控制的特定第 3 方库的警告?

【问题讨论】:

    标签: c++ visual-studio-2008 warnings


    【解决方案1】:

    您没有确切说明您是如何编译的,但这里有一些选项:

    1 - 在 Visual Studio 中,您可以通过每个源文件的属性设置单个源文件的警告级别

    2 - 您还可以使用

    在文件中动态更改警告级别
    #pragma warning(push, 3)
    // Some code, perhaps #includes
    #pragma warning(pop)
    

    在两个 pragma 之间将警告级别设置为 3。

    【讨论】:

      【解决方案2】:

      如果您禁用最知名的 MSVC 愚蠢警告,问题可能至少会变得可控。

      我的 sillywarnings 抑制标头可在 my blog 获得;使用<windows.h> 在警告级别 4 和 MSVC 编译代码就足够了,没有警告。

      除此之外,您还可以采用“编译器防火墙”的极端措施,这意味着将所有直接使用的 3rd 方库放在一个实现文件或一组此类文件中。然后您可以在低警告级别编译这些文件。但我觉得不值得。

      干杯,

      【讨论】:

      • @bobpaul:据我所知,您的专业领域是 Python,而不是 C++。
      • 在商业上,我主要做 C(嵌入式)然后是 C++(产品测试员)。 Python 是感兴趣的业余语言。我不明白这有什么关系。
      • @bobpaul:嗯,只有非常权威的消息来源才能做出完全未指明的敏感、模糊的负面评价并认真对待。你根本不是权威来源。我刚刚告诉你:我没有认真对待,但更像是一个巨魔。
      【解决方案3】:

      您可以将第 3 方 .h 文件包装到您自己的文件中,并在其中本地禁用违规警告,因为您可能不想禁用所有警告,而只想禁用特定警告。

      // include_file_wrapper.h
      
      #pragma GCC diagnostic push
      #pragma GCC diagnostic ignored "-Wuninitialized"
      
      #include "file.h"
      
      #pragma GCC diagnostic pop
      

      对于 gcc,这里是如何做到的

      http://gcc.gnu.org/onlinedocs/gcc/Pragmas.html

      http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-16
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2018-10-17
        • 2011-02-14
        • 1970-01-01
        • 2019-12-25
        相关资源
        最近更新 更多