是否有 GCC 标志来发出有关作用域内相同变量重定义的警告?



如图所示,以下是有效的 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

相关内容

  • 没有找到相关文章

最新更新