【发布时间】:2017-11-08 22:10:51
【问题描述】:
void f(int x) {
int (x), 1;
}
Clang 编译它,GCC 没有。哪个编译器是正确的?
【问题讨论】:
-
看起来正确。但是有什么意义呢?
-
我看不出这不应该编译的原因。 gcc 会产生什么错误?编辑:似乎抱怨本地
x掩盖了论点x。据我所知,虽然这是个坏主意,但这是允许的。 -
@FrançoisAndrieux 这看起来很像
int x, <other declarations>的声明。并且您可以在声明中使用多余的括号 -
@Stephen 拥有
void f() { ... }编译没有问题。如果任何地方都没有 main 函数,那将是 linker 错误。但是编译不包含main函数的代码其实是常见的情况 -
@RegisPortalez:这是一个精简的例子,所以它可能看起来毫无意义,但事实并非如此。
标签: c++ syntax expression language-lawyer variable-declaration