警告错误时使用[[deprecated]]属性(-Werror)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了警告错误时使用[[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

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

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

答案

你需要添加

-Wno-error=deprecated-declarations

告诉gcc保持deprecated-declarations作为警告,而不是让它成为一个错误。

您可以添加其他内容

-Wno-error=name_of_wanring

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

另一答案

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

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

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

以上是关于警告错误时使用[[deprecated]]属性(-Werror)的主要内容,如果未能解决你的问题,请参考以下文章

@Deprecated注解的使用

什么是用于关闭 #pragma deprecated 警告的 Win 编译开关?

ios deprecated 警告消除 强迫症的选择

关闭 C4996 警告(_CRT_SECURE_NO_DEPRECATE)

添加 CoreData 模型显示“Deprecated Feature: Transient Inverse”警告

Xcode 7 警告 loadNibNamed:owner is deprecated: first deprecated in OS X 10.8