“GNU C中的语句和声明”是否特定于GNU C?

表达式中的语句和声明是否特定于GNU C? 或者这个function也包含在C99标准中?

这是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 

虽然这不是 C99标准,但此扩展也不是特定于gcc。

例如, clang编译器和Intel C ++编译器支持此扩展。

它是GNU C扩展。 这就是他们所说的“可能会出现……在GNU C中 。” (我的重点)