ANSI C89 требует, чтобы переменные объявлялись в начале области. Это расслабляется в C99.
Это ясно с gcc
, когда вы используете флаг -pedantic
, который более точно обеспечивает соблюдение стандартных правил (поскольку по умолчанию используется режим C89).
Обратите внимание, что это действительный код C89:
include <stdio.h>
int main()
{
int i = 22;
printf("%d\n", i);
{
int j = 42;
printf("%d\n", j);
}
return 0;
}
Но использование фигурных скобок для обозначения области (и, следовательно, времени жизни переменных в этой области), кажется, не особенно популярно, таким образом, C99 ... и т. Д.