Make -Wshadow忽略初始化列表

时间:2015-08-26 10:46:33

标签: c++ gcc gcc-warning shadowing

在一个大型项目中,我最近发现了阴影成员变量的问题。为了避免将来这些,我想介绍-Wshadow来展示那些问题。然而,大多数构造函数看起来像这样:

struct Foo{
  int bar1, bar2;
  Foo(int bar1, int bar2): bar1(bar1), bar2(bar2){}
}

哪个好用又方便但当然会让编译器发出警告,所以我会在那些地方发出警告。当然我可以更改参数名称或成员变量(但是它们应该被调用什么?A" bar1"已经完全描述了这个名字......)但是这很多工作分散了实际的注意力问题我现在很想让gcc忽略初始化列表。

是否有任何标记/选项/ ...其行为类似于Wshadow但忽略初始化列表?

1 个答案:

答案 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

};