【问题标题】:Make -Wshadow ignore initializer list使 -Wshadow 忽略初始值设定项列表
【发布时间】:2015-08-26 10:46:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ gcc gcc-warning shadowing


    【解决方案1】:

    暂时忽略使用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
    
    };
    

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 1970-01-01
      • 2017-01-22
      • 2021-10-29
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      相关资源
      最近更新 更多