Я давно думал, что в C все переменные должны были быть объявлены в начале функции. Я знаю, что в C99 правила те же, что и в С++, но каковы правила размещения объявлений переменных для C89/ANSI C?
Следующий код успешно компилируется с gcc -std=c89
и gcc -ansi
:
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
char c = (i % 95) + 32;
printf("%i: %c\n", i, c);
char *s;
s = "some string";
puts(s);
}
return 0;
}
Должны ли объявления c
и s
вызывать ошибку в режиме C89/ANSI?