【问题标题】:Can I treat a specific warning as an error?我可以将特定警告视为错误吗?
【发布时间】:2011-06-12 15:51:36
【问题描述】:

以下是我有时在学生代码中看到的模式的简化版本:

bool foobar(int a, int b)
{
    if (a < b) return true;
}

当然,真正的代码更复杂。 Visual Studio 报告警告 C4715(并非所有控制路径都返回值),我想将所有警告 C4715 视为错误。这可能吗?

【问题讨论】:

  • 当然,您应该将所有警告视为错误。 :)
  • @GMan:虽然在一般情况下我同意。有时需要能够处理特定的事情。
  • @GManNickG - 我最近为我的一个项目打开了-Werror 并意识到它有一个缺点,那就是当我开发代码时,将错误归类为错误很有帮助或警告。我可以看到“啊哈,2 个警告和 1 个错误”并开始预测我可能做错了什么,而不是只看到“3 个错误”。真的-Werror 似乎只有当这是让人们消除代码中的警告的唯一方法时才有必要。

标签: c++ visual-studio-2008 function warnings return-value


【解决方案1】:

这应该可以解决问题:#pragma warning (error: 4715).
/we4715 命令行选项(参见/w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level)(由Tom Sigerdas 提供))。

【讨论】:

【解决方案2】:

/we4715 为我工作。

无论如何,在 Visual Studio 2013 中,它位于 UI 下 Project Settings -> Configuration Properties -> C/C++ -> *高级 *-> 将特定警告视为错误。添加“4715”。

文档:http://msdn.microsoft.com/en-us/library/thxezb7y.aspx

(请注意,此页面列出了错误的 VS2013 UI 属性。)

【讨论】:

    【解决方案3】:

    我在 (VB) 项目文件中添加了以下内容并且它起作用了:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">  
    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,41997</WarningsAsErrors>
    </PropertyGroup>
    

    【讨论】:

      【解决方案4】:

      将编译器警告级别设置为 4 级(在 Visual Studio 中),它会将所有警告视为错误。让您的学生编译他们的代码时没有任何警告和错误是一种很好的做法:)

      另外,打开 /WX 编译器选项。

      【讨论】:

      • 不,不会的。除非你告诉它。两者都设置是一个好习惯,但设置为 4 级并不足以使其在出现警告时出错。
      • 我忘了提到 /WX 选项。编辑修复。
      • @Zac:另一方面,在第 4 级,VS 真的会为很多 不是 错误的事情大喊大叫。我更喜欢 3 级和 /WX 一起。
      • @Matthieu: /W4 很好,但 /Wall 很烦人,它会对系统标头中的内容发出警告。
      • @Matthieu:它只会对你在第 4 级创建的警告尖叫。我避免使用 /Wall,因为我无法修复 Microsoft 的标准库实现,但它会尖叫你为它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 2012-01-13
      • 2022-08-03
      相关资源
      最近更新 更多