我正在迁移到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
,这些将再次成为警告而不是错误。