2

在一个大型项目中,我最近发现了隐藏成员变量的问题。为了避免将来出现这些问题,我想引入 -Wshadow 来显示这些问题。然而,大多数构造函数看起来像这样:

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

这很好也很方便,但当然会让编译器发出警告,所以我在这些地方收到垃圾邮件。当然我可以更改参数名称或成员变量(但它们应该叫什么?“bar1”已经完美地描述了这个名称......)但是因为这是很多工作分散了实际问题的注意力,我宁愿现在喜欢让 gcc 忽略初始值设定项列表。

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

4

1 回答 1

0

使用GCC 的诊断编译指示暂时忽略警告。

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

};
于 2016-08-25T20:27:36.710 回答