Are “Statement and Declarations in Expressions” specific to GNU C?

后端 未结 3 1357
一个人的身影
一个人的身影 2021-01-24 04:09

Are Statement and Declarations in Expressions specific to GNU C ? Or this feature is also included in C99 standard ?

相关标签:
3条回答
  • 2021-01-24 04:33

    It's a GNU C extension. That's what they mean by "may appear ... in GNU C." (my emphasis)

    0 讨论(0)
  • 2021-01-24 04:35

    It's a GCC extension. (See the GCC docs, e.g. here for gcc 4.3.3, for a full list of GCC extensions; and the C99 spec is available here.)

    GCC will warn about such things if you use the -pedantic -std=c99 flags, e.g.:

    $ 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
    
    0 讨论(0)
  • 2021-01-24 04:41

    While this is not a C99 standard, this extension is not specific to gcc either.

    For instance, the clang compiler and Intel C++ compiler support this extension.

    0 讨论(0)
提交回复
热议问题