Являются ли «Заявление и объявления в выражениях» специфичными для GNU C? - PullRequest
1 голос
/ 20 июня 2010

Являются ли операторы и объявления в выражениях специфичными для GNU C? Или эта функция также включена в стандарт C99?

Ответы [ 3 ]

3 голосов
/ 20 июня 2010

Хотя это не стандарт C99, это расширение не специфично для gcc.

Например, clang compiler и Компилятор Intel C ++ поддерживает это расширение.

2 голосов
/ 20 июня 2010

Это расширение GCC. (См. Документы GCC, , например, здесь для gcc 4.3.3 , для полного списка расширений GCC; спецификация C99 доступна здесь .)

GCC будет предупреждать о таких вещах, если вы используете флаги -pedantic -std=c99, например ::

$ 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
1 голос
/ 20 июня 2010

Это расширение GNU C.Вот что они имеют в виду под «может появиться ... в GNU C ».(мой акцент)

...