如图所示,以下是有效的 C 代码:
int test = 10;
if (true) {
int test = 10;
}
我想知道在这种情况下是否有一个标志可以警告,其中重新定义是相同的。
有:-Wshadow=local
.传入不同的值(而不是"本地")还可以更精确地控制哪些标识符可以隐藏,哪些标识符不能被隐藏。
它检查名称是否相同,这是一个足够好的近似值。
-Wshadow 每当局部变量或类型声明隐藏另一个变量、参数、类型或类成员(以 C++ 为单位)时发出警告,或者 每当内置函数被隐藏时。请注意,在C++中, 编译器不会警告局部变量是否隐藏 struct/class/enum,但如果它隐藏了显式 typedef,则会发出警告。
资料来源:https://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/Warning-Options.html