最近,在一个大型项目中,我发现影子成员变量存在问题。为了避免将来出现这些问题,我想引入-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/