【发布时间】:2019-12-06 18:08:50
【问题描述】:
是否有编译器开关可以在 Visual Studio 中启用单个警告?
我问的原因是我想启用默认关闭的警告 C4265。我的搜索只找到了关闭警告的方法。
即使是名为 How to: Enable or Disable Compiler Warnings 的 Microsoft 页面仍然只提到禁用。
【问题讨论】:
标签: c++ visual-studio warnings
是否有编译器开关可以在 Visual Studio 中启用单个警告?
我问的原因是我想启用默认关闭的警告 C4265。我的搜索只找到了关闭警告的方法。
即使是名为 How to: Enable or Disable Compiler Warnings 的 Microsoft 页面仍然只提到禁用。
【问题讨论】:
标签: c++ visual-studio warnings
如果你想在项目设置中开启(或关闭)它,你必须去:
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#### 尚未明确公开。
【讨论】:
#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
【讨论】:
#pragma warning(default:4245) 不会启用它,但 #pragma warning(3:4245) 会启用。 (这只是咬我)
用途:
#pragma warning(default:4265)
并至少使用/W3进行编译。
这是来自 Microsoft 的一个明确示例:
http://msdn.microsoft.com/en-us/library/wzxffy8c(v=VS.90).aspx
【讨论】:
为了让 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将警告行为重置为其默认值。这也会打开默认关闭的指定警告。警告将在其默认的记录级别生成。
【讨论】: