Позволяет ли стандарт C11 (заметьте, я не имею в виду C++11) объявлять переменные в любом месте функции?
Код ниже недействителен в ANSI C (C89, C90):
int main()
{
printf("Hello world!");
int a = 5; /* Error: all variables should be declared at the beginning of the function. */
return 0;
}
Это действительный исходный код в C11?
-ansi
как синоним-std=c89
и не распознает-std=c90
(но большинство версий GCC распознаютstd=c99
, а некоторые последние распознают-std=c11
). Раньше для POSIX требовался компиляторc89
C; в настоящее время для этого требуется компиляторc99
, поскольку он не был пересмотрен. - person Jonathan Leffler   schedule 28.10.2012