首页 > 解决方案 > 当警告是错误时使用 [[deprecated]] 属性 (-Werror)

问题描述

我正在迁移到 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

问题是不推荐使用的警告被提升(降级?)为错误并且构建失败。

显然,使用 a#pragma来使警告静音完全违背了这一点。有没有办法告诉 g++ 发出警告但排除特定的警告被视为错误?

标签: c++compiler-errorsg++c++14compiler-warnings

解决方案


您需要添加

-Wno-error=deprecated-declarations

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

您可以添加额外的

-Wno-error=name_of_warning

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


推荐阅读