私は長い間、C ではすべての変数を関数の先頭で宣言する必要があると考えていました。C99 のルールは C++ と同じですが、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;
}
C89/ANSI モードでの宣言c
とs
エラーの原因となるべきではありませんか?