最近,在一个大型项目中,我发现影子成员变量存在问题。为了避免将来出现这些问题,我想引入-Wshadow来显示此类问题。但是,大多数构造函数如下所示:

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

很好,也很方便,但是当然会使编译器发出警告,所以我在那些地方收到警告。当然,我可以更改参数名称或成员变量(但是应将其称为什么?“bar1”已经很好地描述了名称...)但是,因为这要花很多时间来分散实际问题,所以我宁愿像现在让gcc忽略初始化列表。

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

最佳答案

使用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

};

关于c++ - 使-Wshadow忽略初始化程序列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32224556/

10-09 04:10