【问题标题】:Why doesn't GCC show any errors on an anonymous variable?为什么 GCC 不会在匿名变量上显示任何错误?
【发布时间】:2017-10-31 07:30:34
【问题描述】:

我阅读了this 问题,该问题解释了匿名变量在 C++ 中如何无效。

但以下程序在 GCC 7.2 上编译时没有任何警告或错误(即使使用 -Wall)-demo

int main() {
    int (*); // anonymous variable?
}

这里,这显然也是一个整数类型的匿名变量。那么,为什么 GCC 不显示任何错误或警告呢?这是 GCC 错误吗?

【问题讨论】:

  • 你使用了哪些编译器标志?
  • This 确实令人惊讶。 @Jayesh 在你的问题中写下所有相关信息。
  • 确实,-c -Wall -Wextra g++-7 编译器只说 clang++-5.0 给出错误:expected expression 在右括号上。也许它可能是一些编译器错误(我不知道谁错了)。
  • @PasserBy - 它是在创建一个临时的吗? int() 是一个函数类型。情节变厚
  • @PasserBy - 此外,forcing it to be a temporary (by replacing () with {}) 绝对不会产生任何诊断结果。

标签: c++ variables gcc anonymous


【解决方案1】:

已经记录了 gcc 以及它如何检测变量的错误,例如我用它来编译一个简单的程序,它给出了一个错误,说变量可能未初始化。这只是编译器中的一个错误。例如见https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55985

【讨论】:

  • 响应是至少从 gcc 5.3 开始,该问题已得到修复。即使对于 gcc 7.2,OP 的问题仍然存在
  • 问题仍然存在,因为我在 7.2 中遇到了这个错误,这个错误可能刚刚在这个个别情况下得到修复,或者在以后的更新中出现了问题。
猜你喜欢
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 2019-06-22
  • 2016-02-18
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多