在一个大型项目中,我最近发现了阴影成员变量的问题。为了避免将来这些,我想介绍-Wshadow来展示那些问题。然而,大多数构造函数看起来像这样:
struct Foo{
int bar1, bar2;
Foo(int bar1, int bar2): bar1(bar1), bar2(bar2){}
}
哪个好用又方便但当然会让编译器发出警告,所以我会在那些地方发出警告。当然我可以更改参数名称或成员变量(但是它们应该被调用什么?A" bar1"已经完全描述了这个名字......)但是这很多工作分散了实际的注意力问题我现在很想让gcc忽略初始化列表。
是否有任何标记/选项/ ...其行为类似于Wshadow但忽略初始化列表?
答案 0 :(得分:0)
使用GCC's diagnostic pragmas暂时忽略警告。
struct Foo{
int bar1, bar2;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow"
Foo(int bar1, int bar2)
:bar1{bar1}
,bar2{bar2}
{}
#pragma GCC diagnostic pop
};