1. ホーム
  2. c

[解決済み】エラー:'for'ループの初期宣言はC99モードでしかできない【重複

2022-01-25 05:49:32

質問

以下のエラーが発生するのですが、std=c99/std=gnu99モードとは何ですか?

ソースコード

#include <stdio.h>

void funct(int[5]);

int main() 
{        
    int Arr[5]={1,2,3,4,5};
    funct(Arr);
    for(int j=0;j<5;j++)
    printf("%d",Arr[j]);
}

void funct(int p[5]) {
        int i,j;
        for(i=6,j=0;i<11;i++,j++)
            p[j]=i;
}


Error Message:
hello.c: In function ‘main’:
hello.c:11:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
for(int j=0;j<5;j++)
      ^
hello.c:11:2: note: use option -std=c99 or -std=gnu99 to compile your code`

解決方法は?

これは、forループの中で変数を宣言することが、C99(1999年に発行されたCの規格)までは有効なC言語ではなかったためです。他の人が指摘したように、カウンターをforの外で宣言するか、-std=c99フラグを使って、この規格を使っていることをコンパイラに明示的に伝え、そのように解釈してもらうことが可能です。