【问题标题】:Is there a GCC flag to emit warning about identical variable redefinition inside scope?是否有 GCC 标志发出有关范围内相同变量重新定义的警告?
【发布时间】:2017-06-22 01:55:12
【问题描述】:

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

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

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

【问题讨论】:

  • @Olaf 哇。诚然,我可以阅读它,但对社区没有任何价值,不是吗?顺便说一句,C++ 标签 is 有效。请参阅我链接到的相关问题。
  • 这样的问题对社区没有任何价值(这也是一个蹩脚的借口),因为这显然是要搜索的第一件事。 gcc 有据可查,文档再好不过了:gcc documentation.

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


【解决方案1】:

有:-Wshadow=local。传入不同的值(而不是“local”)还可以更精确地控制哪些标识符可以被遮蔽和不能被遮蔽。

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

【讨论】:

    【解决方案2】:

    -Wshadow 每当局部变量或类型声明隐藏另一个变量、参数、类型或类成员(在 C++ 中)时发出警告,或者 每当隐藏内置函数时。请注意,在 C++ 中, 如果局部变量遮蔽了 struct/class/enum,但如果它隐藏了明确的 typedef 则会发出警告。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2023-04-08
      • 2010-10-26
      • 1970-01-01
      相关资源
      最近更新 更多