好比寫出下面這段程序: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,級別越大優化效果越好,但編譯時間越長。