Visual Studio 禁用特定目录中文件的警告
Posted
技术标签:
【中文标题】Visual Studio 禁用特定目录中文件的警告【英文标题】:Visual Studio disable warnings for files in specific directories 【发布时间】:2020-08-28 04:02:06 【问题描述】:我们有一个 VS 2019 项目,其中包括我们添加到项目中的外部源库。例如,我们正在使用 WTL(Windows 模板库)。在编译期间,这些库会产生大量警告(尤其是对于没有默认值的成员)。
对于这些文件,我们希望完全禁用警告,或者至少指定某些目录应该排除哪些警告,因为
-
我们不会更改该代码
警告太多了,我们很容易从自己的代码中遗漏一些我们应该解决的问题
我看到一篇关于您应该能够传递一些标志以禁用“外部”文件警告的帖子,但我在项目设置中看不到任何选项。
【问题讨论】:
How to suppress warnings in external headers in Visual C++ 回答你的问题了吗? 根据Broken Warnings Theory,他们已经对/external:I <path>
和/external:W<level>
进行了试验,以便能够在外部标头上设置不同的警告级别。在文章中,有人说应该使用/experimental:external
,虽然我的 VS2019 似乎仍然可以识别我正在尝试做的部分事情,但我不太清楚它是否仍然受支持。
【参考方案1】:
有几种方法可以禁用警告:
Project Properties->C/C++->General->Warning Level->select level
这里是Warning Level
:
或者您可以选择禁用 Project Properties->C/C++->Advanced->Disable Specific Warnings
中的特定警告
-
您可以使用warning pragma。
语法:
#pragma warning(
warning-specifier : warning-number-list
[; warning-specifier : warning-number-list ... ] )
#pragma warning( push [ , n ] )
#pragma warning( pop )
另外,您可以向微软咨询How to: Enable and Disable Code Analysis for Specific C/C++ Warnings。
启用或禁用代码分析警告
2.1.创建一个头文件,列出所有代码分析警告及其初始状态,如下代码所示:
// WarningState.h
#pragma warning ( default : 6001 )
#pragma warning ( disable : 6011 )
// more warnings here
// end of file
2.2.在应用程序头文件中包含WarningState.h。在这种情况下,MyApplication.h 代表头文件。
// MyApplication.h file
#include "WarningState.h"
// ...
// end of file
2.3.在源代码文件中包含MyApplication.h文件。在这种情况下,MyApplication.cpp 代表源文件。
// MyApplication.cpp file
#include "MyApplication.h"
2.4.要修改警告状态,在.cpp文件中使用pragma warning-specifier,如下代码所示:
// MyApplication.cpp file
#include "MyApplication.h"
#pragma warning ( disable: 6001 )
#pragma warning ( default : 6001 )
禁用包含的第三方文件的所有代码分析警告
将以下代码添加到您的头文件中。
#include <codeanalysis\warnings.h>
#pragma warning( push )
#pragma warning ( disable : ALL_CODE_ANALYSIS_WARNINGS )
#include <third-party include files here>
#pragma warning( pop )
【讨论】:
这很接近,但我们根据需要将这些第三方头文件包含在许多文件中。我不明白我们如何避免到处复制粘贴这段代码。 我尝试了你的最后一个示例,使用编译指示警告(推送)并弹出我的 stdafx.h,但仍然收到警告。 我收回了。我做了一个完整的重建,它似乎工作!谢谢。以上是关于Visual Studio 禁用特定目录中文件的警告的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2015 中禁用 C# 6 支持?
visual studio 2017没法安装,总在visual studio installer界面闪推
为啥我不能在 Visual Studio 中禁用预编译头文件?