cstandardsgnuc99compiler-extension

Are "Statement and Declarations in Expressions" specific to GNU C?


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


Solution

  • 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