如何使用Visual Studio 2017的最高警告级别(Wall)与std标头不兼容?

问题描述 投票:0回答:1

但我想用“警告视为错误”=是

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

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

编辑:

添加了visual studio中的设置图片,以及我尝试构建时会发生什么的示例。只包括iostream!

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

c++ visual-studio visual-studio-2017
1个回答
1
投票

您可以通过在每次包含之前更改警告级别来禁用标题中的警告(或更改警告级别),请参阅此处:How to suppress warnings in external headers in Visual C++。然而,这并不是那么方便,因为它需要为每一个包容而做。

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

正如所讨论的那样,“/ Wall”有时会走得太远(例如,填充是很常见的事情,有时甚至无法做任何事情),即使使用“/ W4”,documentation也提到它可能过于详细(但同时推荐它用于新项目,所以我通常使用“/ W4 / WX”进行新项目)。然而,一些“/ Wall”警告仍然可能会发现微妙的错误(例如交换机中的丢失情况等)。你不妨只启用some of the extra warnings selectively

© www.soinside.com 2019 - 2024. All rights reserved.