【问题标题】:Enable a single warning in Visual Studio在 Visual Studio 中启用单个警告
【发布时间】:2019-12-06 18:08:50
【问题描述】:

是否有编译器开关可以在 Visual Studio 中启用单个警告?

我问的原因是我想启用默认关闭的警告 C4265。我的搜索只找到了关闭警告的方法。

即使是名为 How to: Enable or Disable Compiler Warnings 的 Microsoft 页面仍然只提到禁用。

【问题讨论】:

    标签: c++ visual-studio warnings


    【解决方案1】:

    如果你想在项目设置中开启(或关闭)它,你必须去:

    Configuration Properties -> C/C++ -> Command Line 然后在Additional Options下你可以输入:

    /w3#### 将您的警告设置为 3 级,从而启用它;或者您可以输入/wd#### 来禁用警告。


    当前 (2015,2017,2019,...) Visual Studio 版本也有一个专用设置来禁用以下警告:

    Configuration Properties -> C/C++ -> Advanced : Disable Specific Warnings ...等价于/wd####

    在最近的版本中也很有用:C/C++ -> All Options 然后过滤例如“警告”。

    似乎启用 á la /w3#### 尚未明确公开。

    【讨论】:

    • 最佳答案!非常感谢!我在 MSDN 上的任何地方都没有看到它。
    • 实际上不适用于 VStudio 2015。将其添加到 Synergy 的每个项目中,但仍然出现构建错误“请启用它”。对所有配置使用附加参数 /w34005
    • @Slesa - 当然它适用于 VS2015。 (我刚试过)你做了什么?发布一个新问题。
    • 我要启用的警告是 4706。对我来说,它也不适用于 VS2017,无论是 /w34706 还是 /w44706。
    • @jaba 我很确定如果你写了一个正确的问题并尝试包含所有必要的细节,你会发现问题。
    【解决方案2】:
    #pragma warning(default:4265)
    

    这似乎会将警告设置为默认设置(将被禁用),但事实并非如此。它会打开它。

    http://msdn.microsoft.com/en-us/library/2c8f766e%28VS.80%29.aspx

    您也可以这样做:

    #pragma warning(X:4265)
    // where X is the warning level(1,2,3 or 4) that you want this warning to be generated at
    

    【讨论】:

    • +1。是的,default 这个词表示默认警告级别,而不是默认状态。感谢您指出这一点,我自己没有找到。
    • 我正在寻找一个编译器标志来执行此操作而不是更改代码,因为那时警告没有在项目范围内定义,但似乎这是实现结果的唯一方法:(
    • 如果所选警告的默认警告级别低于项目属性中设置的级别(就严重性而言),这将不起作用。 示例: 警告级别设置为 3 (/W3),但警告 C4245 的默认级别为 4。使用 #pragma warning(default:4245) 不会启用它,但 #pragma warning(3:4245) 会启用。 (这只是咬我)
    【解决方案3】:

    用途:

    #pragma warning(default:4265)
    

    并至少使用/W3进行编译。

    这是来自 Microsoft 的一个明确示例:

    http://msdn.microsoft.com/en-us/library/wzxffy8c(v=VS.90).aspx

    【讨论】:

      【解决方案4】:

      为了让 Matthäus Brandl 关于#pragma warning 的评论更加明显:

      如果您使用低于 3 的警告级别进行编译,则必须使用以下语法:

      #pragma warning (<warning level>: 4265)
      

      只有使用 3 级或更高级别才能编译

      #pragma warning (default: 4265)
      

      因为对于警告 4265,default 表示 3 级(参见 MSDN)。

      documentation for #pragma warning 内容如下:

      warning-specifier含义

      1, 2, 3, 4 将给定级别应用于指定的警告。这也会打开默认关闭的指定警告。

      default 将警告行为重置为其默认值。这也会打开默认关闭的指定警告。警告将在其默认的记录级别生成。

      【讨论】:

        猜你喜欢
        • 2020-03-12
        • 2015-12-27
        • 1970-01-01
        • 2010-09-16
        • 2011-02-10
        • 1970-01-01
        • 2021-11-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多