2015-08-24 55 views
1

我創建了一個for循環中的C,這應該工作,但是Eclipse的告訴我,我用了一個未聲明的變量,這裏是我的代碼:根據Eclipse的未聲明的變量,而已經宣佈

#include <stdio.h> 

int main(int argc, char ** argv) { 
for(int i = 1; i <= 5; ++i) { 
    printf("i is %d\n", i); 
} 
return 0; 
} 

未聲明的變量iprintf行上它已在for聲明中聲明的權限?這段代碼與我在下面的教程中使用的完全一樣,但它在視頻中工作。

+5

你的編譯器可能是以下C89的規則,在那裏你必須聲明變量在新塊開始之後{看你是否可以配置eclipse來使用C​​99或者把int i;在main()後面{ –

+1

感謝robin.koch!將Eclipse改爲使用C99確實有效。 – Jesse

回答

3

在ANSI C中(與C90/C11不同),不能在for循環中聲明變量。您可惜的是有這個(或更改編譯器更現代的一個,你會不會與ANSI標準兼容儘管):

int main(int argc, char ** argv) { 
int i; 
for(i = 1; i <= 5; ++i) { 
    printf("i is %d\n", i); 
} 
return 0; 
}