作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有用于编译(和工作)的 C++ 代码,现在我收到很多警告。这是在我对 Ubuntu-Mate 进行分布式升级后发生的。
warning: dynamic exception specifications are deprecated in C++11
它发生在像这样简单的行上(在标题中):
static Value getPriorityValue(const std::string& priorityName)
throw(std::invalid_argument);
我收到了与此相关的 2545 条警告!无论如何告诉编译器忽略这个警告?更改代码的最简单方法是什么。
大多数错误都在第 3 方包中,因此我不想对此包进行太多修改。
我的编译器中确实有 -std=c++11 标志。
最佳答案
您应该尽可能删除或注释掉这些异常规范1,例如:
static Value getPriorityValue(const std::string& priorityName);
static Value getPriorityValue(const std::string& priorityName) /* throw(...) */;
您可以使用 -Wno-deprecated
选项关闭无法编辑代码的地方的折旧警告。我建议只在编译第三方库时使用它。如果您需要包含引发此类警告的第三方 header ,您可以执行2:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated"
#include "thirdparty.h"
#pragma GCC diagnostic pop
这应该与 gcc
和 clang
一起工作,并且只会禁用 -Wdeprecated
用于特定的包含。
1 动态异常规范从 C++11 开始被弃用,并且从 C++17 开始是非法的,所以你可能想摆脱它们并升级你的第三方库正在尽快使用。
2 如果您使用 -I
参数包含这些 header ,您可以切换到 -isystem
以禁用所有警告这些 header ,如 @Yakk - Adam Nevraumont 所述.另见 How to suppress GCC warnings from library headers? .
关于c++ - 动态异常规范已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50254641/
我是一名优秀的程序员,十分优秀!