是否有GCC标志发出关于范围内相同变量重新定义的警告?

时间:2017-06-22 01:55:13

标签: c++ c gcc compiler-warnings redefinition

here所示,以下是有效的C代码:

int test = 10;
if (true) {
    int test = 10;
}

我想知道在这样的情况下是否有警告标志,重新定义是相同的。

2 个答案:

答案 0 :(得分:4)

有:-Wshadow=local。传递不同的值(而不是"本地")也可以更精确地控制哪些标识符可以被遮蔽。

它检查名称是否相同,这是一个足够好的近似值。

答案 1 :(得分:2)

  

-Wshadow   每当局部变量或类型声明影响另一个变量,参数,类型或类成员(在C ++中)或时,都会发出警告   每当内置函数被遮蔽时。请注意,在C ++中,   如果局部变量影响a,编译器将不会发出警告   struct / class / enum,但如果它隐藏了一个显式的typedef,它会发出警告。

来源:https://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/Warning-Options.html