表达式中的声明和声明是GNU C 特有的吗?或者这个特性也包含在 C99 标准中?
问问题
915 次
3 回答
3
这是一个 GCC 扩展。(有关 GCC 扩展的完整列表,请参阅 GCC 文档,例如此处的 gcc 4.3.3;C99 规范可在此处获得。)
-pedantic -std=c99
如果您使用这些标志,GCC 会警告此类事情,例如:
$ cat foo.c
int main(void)
{
return ({ int a = 0; a; });
}
$ gcc -pedantic -std=c99 -c foo.c
foo.c: In function 'main':
foo.c:3: warning: ISO C forbids braced-groups within expressions
于 2010-06-20T15:23:57.687 回答
3
虽然这不是C99 标准,但此扩展也不特定于 gcc。
例如,clang 编译器和英特尔 C++ 编译器支持此扩展。
于 2010-06-20T16:39:18.323 回答
1
这是一个 GNU C 扩展。这就是他们所说的“可能出现在……在GNU C中”的意思。(我的重点)
于 2010-06-20T15:24:04.097 回答