web-dev-qa-db-ja.com

エラー:「for」ループの初期宣言はC99モードでのみ許可されます

次のエラーが表示されます。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`
18
Rajit s rajan

これは、forループ内の変数の宣言がC99(1999年に公開されたCの標準)まで有効なCではなかったために発生します。この標準を使用していることをコンパイラに明示的に伝え、それをそのように解釈する必要があります。

32
Alejandro Díaz

ループの前に最初のforループに使用される変数jを宣言する必要があります。

    int j;
    for(j=0;j<5;j++)
    printf("%d",Arr[j]);
4
MySequel

「Prof. Dr. Michael Helbig」による最も簡単なソリューション。モードをc99に切り替えるので、メイクファイルに毎回フラグを追加する必要はありません http://www.bigdev.de/2014/10/Eclipse-cc-for-loop-initial.html ?showComment = 1447925473870#c6845437481920903532

解決策:コンパイラーにオプション-std = c99を使用してください! [プロジェクト]> [プロパティ]> [C/C++ Buils]> [設定]> [ツール設定]> [GCC Cコンパイラ]> [ダイアレクト]> [言語標準]:[ISO C99]を選択します

1
Kashif