当警告为错误时使用 [[已弃用]] 属性 (-Werror)

Using [[deprecated]] attribute when warnings are errors (-Werror)

本文关键字:属性 警告 -Werror 错误      更新时间:2023-10-16

我正在迁移到 C++14 并热衷于采用其[[deprecated]]功能,例如

#include <string>
#include <iostream>
[[deprecated]]
int f() { return 42; }
int main()
{
std::cout << f() << std::endl;
}

编译方式

g++ example.cpp -std=c++14 -Werror

问题是已弃用的警告被提升(降级?(为错误,并且构建失败。

显然,使用#pragma来压制警告完全违背了重点。有没有办法告诉 g++ 发出警告,同时排除特定的警告,使其不被视为错误?

你需要添加

-Wno-error=deprecated-declarations

告诉 GCC 保留deprecated-declarations作为警告,而不是使其成为错误。

您可以添加其他

-Wno-error=name_of_warning

如果您有其他警告,不希望也被视为错误。

使用 GCC(还有 Clang(,您可以禁用特定警告的错误。

使用-Wno-error=后跟警告名称(与警告或错误一起显示(将禁用该特定项的错误。

对于您的[[deprecated]],请使用选项-Wno-error=deprecated-declaration,这些将再次成为警告而不是错误。