错误:'for'循环初始声明仅允许在C99模式下使用

时间:2015-03-30 04:02:29

标签: c loops

我收到以下错误,什么是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`

4 个答案:

答案 0 :(得分:27)

这是因为在for循环中声明变量在C99(这是1999年发布的C标准)之前无效C,你可以在其他人指出的情况下在for之外声明你的计数器或者使用-std = c99标志,用于明确告诉编译器您正在使用此标准,它应该将其解释为。

答案 1 :(得分:4)

你需要在循环之前声明用于第一个for循环的变量j。

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

答案 2 :(得分:1)

Michael Helbig教授最简单的解决方案。它会将您的模式切换为c99,因此您不必每次都在make文件中添加标记 http://www.bigdev.de/2014/10/eclipse-cc-for-loop-initial.html?showComment=1447925473870#c6845437481920903532

解决方案:为编译器使用选项-std = c99!转至:项目&gt;属性&gt; C / C ++ Buils&gt;设置&gt;工具设置&gt; GCC C编译器&gt;方言&gt;语言标准:选择“ISO C99”

答案 3 :(得分:-3)

这将是正常工作的代码

#include <stdio.h>

    void funct(int[5]);
    int main()
    {
         int Arr[5]={1,2,3,4,5};
         int j = 0;

        funct(Arr);

        for(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;
    }