Est-ce que Statement and Declarations in Expressions est spécifique à GNU C? Ou cette fonctionnalité est également incluse dans la norme C99?Est-ce que "Statement et Declarations in Expressions" sont spécifiques à GNU C?
Répondre
C'est une extension GCC. (Voir la documentation du CCG, e.g. here for gcc 4.3.3, pour une liste complète des extensions de GCC, et le C99 spec is available here.)
GCC avertit de telles choses si vous utilisez les -pedantic -std=c99
drapeaux, par exemple:
$ 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
C'est un GNU C extension. C'est ce qu'ils veulent dire par "peut apparaître ... dans GNU C." (Je souligne)
La fonctionnalité est-elle également incluse dans la norme C99? –
@AndreiCiobanu - non, c'est limité à GNU C seulement (par opposition à C standard) –
Bien que ce soit pas une norme C99, cette extension n'est pas spécifique à gcc soit. Par exemple, clang compiler et Intel C++ compiler prennent en charge cette extension.
La fonctionnalité est-elle également incluse dans la norme C99? –
Non - ce n'est pas le cas. –
(J'ai mis à jour ma réponse pour clarifier cela.) –