error: ‘for’ loop initial declarations are only allowed in C99 mode


比如寫出下面這段程序:

for (int i = 0; i < n; ++i)

  do_something();

然后用gcc編譯,會報 ‘for’ loop initial declarations are only allowed in C99 mode的錯誤。

原因是在循環條件中聲明變量,只在C99標准中支持,C90標准不支持。

所以改成:

int i;

for (i = 0; i < n; ++i)

  do_something();

這樣編譯就可以通過了。

 

想要不改代碼的情況下編譯通過,使用:

gcc src.c -std=c99 -o src

 

此時報錯:

~/C_test$ cc -std=gnu99 src.c
src.c:9:1: warning: return type defaults to ‘int’ [enabled by default]
main(){
^

 

因為c99 必須是

int main(){

  return 0;

}

的格式

 

在Linux下,使用vim來 編譯 .c文件的選項:

1. 無選項編譯鏈接
用法:#gcc src.c
作用:將src.c預處理、匯編、編譯並鏈接形成可執行文件。這里未指定輸出文件,默認輸出為a.out。

2. 選項 -o
用法:#gcc src.c -o src
作用:將src.c預處理、匯編、編譯並鏈接形成可執行文件src。-o選項用來指定輸出文件的文件名。

3. 選項 -E
用法:#gcc -E src.c -o src.i
作用:將src.c預處理輸出src.i文件。

4. 選項 -S
用法:#gcc -S src.i
作用:將預處理輸出文件src.i匯編成src.s文件。

5. 選項 -c
用法:#gcc -c src.s
作用:將匯編輸出文件src.s編譯輸出src.o文件。

6. 無選項鏈接
用法:#gcc test.o -o src
作用:將編譯輸出文件src.o鏈接成最終可執行文件src。

7. 選項-O
用法:#gcc -O1 src.c -o src
作用:使用編譯優化級別1編譯程序。級別為1~3,級別越大優化效果越好,但編譯時間越長。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM