gpt4 book ai didi

c++ - 动态异常规范已弃用

转载 作者:太空狗 更新时间:2023-10-29 19:56:22 24 4
gpt4 key购买 nike

我有用于编译(和工作)的 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

这应该与 gccclang 一起工作,并且只会禁用 -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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com