2014-05-01 115 views
0

我安裝了VS Express 2012以在我的大學學習C語言。我創建新的空項目,然後新的項目添加到源文件文件夾,並更改Source.cpp到由source.c在Visual Studio Express 2012中運行C代碼的問題

「Hello World」的運行沒有問題,但是當我寫簡單的「for」循環是這樣的:

#include <stdio.h> 
#include <stdlib.h> 

int main() { 

    for (int i = 0; i <= 6; i++) 
    { 
     printf("the i value is: %d\n", i); 
    } 

    getchar(); 

    return (0); 
} 

它寫出了我很多的錯誤:

------ Build started: Project: cTest, Configuration: Debug Win32 ------ 
    Source.c 
e:\ctest\source.c(7): error C2143: syntax error : missing ';' before 'type' 
e:\ctest\source.c(7): error C2143: syntax error : missing ')' before 'type' 
e:\ctest\source.c(7): error C2065: 'i' : undeclared identifier 
e:\ctest\source.c(7): warning C4552: '<=' : operator has no effect; expected operator with side-effect 
e:\ctest\source.c(7): error C2059: syntax error : ')' 
e:\ctest\source.c(8): error C2143: syntax error : missing ';' before '{' 
e:\ctest\source.c(9): error C2065: 'i' : undeclared identifier 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

請幫我解決這個問題。

+1

在函數的開頭聲明'i'變量。 –

+0

@AlexFarber工程。謝謝。你能解釋爲什麼我不能在循環中聲明我的變量。 – Luchnik

+0

@Luchnik由於在c中,你不能在任意範圍聲明局部變量,但只能在函數代碼塊的開頭。 –

回答

1

圖中所示爲IdeOne

error: ‘for’ loop initial declarations are only allowed in C99 mode note: use option -std=c99 or -std=gnu99 to compile your code

我認爲,這將清除您的疑問。在函數的開頭聲明i。 正確的代碼將在WorkingExample這樣。

C99 Wiki這是一個新功能,以前不可用。

Intermingled declarations and code: variable declaration is no longer restricted to file scope or the start of a compound statement (block), similar to C++

關於VC++編譯器,直接從Mr. Herb Stutter's mouth

Implements Standard C90 exactly (using /TC or naming files as something.c)

0

這是因爲你的代碼不服從下,你編譯代碼當前的C標準。在C99標準中允許聲明int i for循環。用-std = c99編譯。

相關問題