c++ - 当 Visual Studio 2017 与 std header 不兼容时,如何使用最高警告级别(墙)?

标签 c++ visual-studio visual-studio-2017

但我想将它与“警告视为错误”=是一起使用

编译器标志中似乎有很多有用的检查,但它与标准 header 不兼容。我想使用这个编译器标志来检查我的代码,而不是标准 header 。有办法做到这一点吗?

或者只是禁用任何不是我编写的代码的警告?

编辑:

添加了 visual studio 中设置的图片以及我尝试构建时发生的情况的示例。只包含 iostream!

Example when trying to compile a basic C++ program with these settings

最佳答案

您可以通过在每次包含之前更改警告级别来禁用 header 中的警告(或更改它们的警告级别),请参见此处:How to suppress warnings in external headers in Visual C++ .然而,这并不方便,因为每次包含都需要这样做。

但是,如果您使用 precompiled headers (这实际上可能对编译速度有好处),您可以将您关心的所有系统/STL 头文件放入预编译的头文件中,并通过 pragmas 就在那里禁用它们。或者您需要为标准 header 创建包装器,您将在其中禁用警告并改为包含包装器 header 。

并且正如所讨论的,“/Wall”有时会走得太远(例如,填充是很常见的事情,有时您甚至无能为力),即使使用“/W4”也是 documentation提到它可能太详细了(不过同时推荐给新项目使用,所以我一般新项目都用"/W4/WX")。然而,一些“/Wall”警告仍然可能会发现细微的错误(比如开关中缺少大小写等)。您不妨只启用 some of the extra warnings selectively .

关于c++ - 当 Visual Studio 2017 与 std header 不兼容时,如何使用最高警告级别(墙)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45579176/

相关文章:

c# - 将单元测试添加到 Visual Studio 2017 负载测试

c# - 将它们放在 WinForm 上时,是否可以让您的用户控件显示这些对齐指南?

visual-studio-2017 - 从Visual Studio 2017社区升级到Pro

c++ - 为 SDL 事件过滤创建指向成员函数的非常量指针

具有右值引用的 C++ 模板化方法消歧规则

c# - 无法在.sln项目中使用watcher.Filters.Add()函数

c# - Selenium - Visual Studios- C# - 所有(chrome、firefox 和 internet explorer)网络驱动程序无法启动驱动程序服务

Azure 函数 - VS2017 工具 - function.json 中缺少绑定(bind)

javascript - WebRTC:在 JavaScript 和 native 代码对等方之间同步视频帧

c++ - 重载策略类​​模板的成员函数