【C言語】’for’ loop initial declarations are only allowed in C99 mode

このエラーメッセージは、C言語で for 文の初期化部分に変数宣言を行う場合に表示されます。

例えば、以下のようなコードでエラーが発生した場合

for (int i = 0; i < 10; i++) {
  printf("%d\n", i);
}

エラーメッセージは以下のようになります。

error: 'for' loop initial declarations are only allowed in C99 mode

このエラーの原因は、C言語の規格であるC89では、for 文の初期化部分に変数宣言が許されていないためです。C99以降では、for 文の初期化部分に変数宣言が許されるようになりましたが、C89ではこのような書き方はエラーとなります。

正しいコードは以下のようになります。

int i;
for (i = 0; i < 10; i++) {
  printf("%d\n", i);
}

C89では、for 文の初期化部分に変数宣言を行わず、変数宣言を冒頭に行うように書く必要があります。C99以降では、上記の例のように書くことができます。

コメント

タイトルとURLをコピーしました