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

好比寫出下面這段程序:vim

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

  do_something();優化

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

緣由是在循環條件中聲明變量,只在C99標準中支持,C90標準不支持。io

因此改爲:編譯

int i;test

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

  do_something();gcc

這樣編譯就能夠經過了。循環

 

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

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,級別越大優化效果越好,但編譯時間越長。

相關文章
相關標籤/搜索