【问题标题】:MSVS 2015 express error C4146 - unary minus operator applied to unsigned typeMSVS 2015 表达错误 C4146 - 一元减号运算符应用于无符号类型
【发布时间】:2016-05-31 12:53:17
【问题描述】:

有没有办法在 Microsoft Visual Studio 2015 - express edition 中禁用错误​​ C4146?我尝试将“将警告视为错误”选项设置为否,但 MSVC 仍将 C4146 视为错误。有什么解决办法吗?

【问题讨论】:

  • 你真的想在你的代码中使用-some_unsigned_var吗?你知道它不会是负数吗?
  • 它是 NTL 库代码的一部分
  • 我认为这是合法的代码,应该被视为警告吗?
  • 这是完全合法的并且具有明确定义的效果 - 但它们不一定是预期的。出现警告是因为这是一个相当不寻常的操作。你试过#pragma warning吗? (见stackoverflow.com/questions/7159348/…
  • 看起来它在警告级别 2 下开启:msdn.microsoft.com/en-us/library/4kh09110.aspx

标签: c++ visual-studio compiler-errors


【解决方案1】:

对于新的 Microsoft Visual Studio Community Edition 项目,“SDL 检查”默认设置为“是 (/sdl)”。这会将某些“安全相关”警告变成错误。将参数设置为“No (/sdl-)”,将它们变为警告。

请参阅有关“SDL 检查”的 Microsoft 文档,目前为 here

编辑:这个问题已经在 cmets 中得到了回答,但由于线程太长,我错过了答案。

【讨论】:

  • 我在哪里可以禁用 SDL(将参数设置为否),因为我遇到了同样的错误?谢谢!
  • 它在 Project / Properties / C/C++ / General / SDL Checks 下
  • 找到了!谢谢!
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-24
  • 2012-03-17
相关资源
最近更新 更多