- 命令形參
命令行參數是使用main()函數參數來處理的,其中,argc是指傳入參數的個數,argv[]是一個指針數組,指向傳遞給程序的每個參數。
應當指出的是, argv[0]存儲程序的名稱,argv[1]是一個指向第一個命令行參數的指針,argv[n]是最后一個參數。 如果沒有提供任何參數,argc 將為1,否則,如果傳遞了一個參數,argc將被設置為2。
多個命令行參數之間用空格分隔,但是如果參數本身帶有空格,那么傳遞參數的時候應把參數放置在雙引號或單引號內部。
測試代碼:
#include <stdio.h>int main(int argc, char *argv[]) {if (argc == 2) {printf("The argument supplied is %s\n", argv[1]);} else if (argc > 2) {printf("Too many arguments supplied.\n");} else {printf("One argument expected.\n");}
}
編譯與運行
- gcc的使用
語法
gcc(選項)(參數)選項:
-o: 指定生成的輸出文件;
-E: 僅執行編譯預處理;
-S: 將C代碼轉換為匯編代碼;
-wall: 顯示警告信息;-c: 僅執行編譯操作,不進行連接操作。 參數:C源文件(指定C語言源代碼文件)
1.選項 -o:將test.c預處理、匯編、編譯并鏈接形成可執行文件test。-o選項用來指定輸出文件的文件名。
gcc test.c -o test
2.選項 -E:將test.c預處理輸出test.i文件。
gcc -E test.c -o test.i
3.選項 -c:將預處理輸出文件test.i匯編成test.s文件。
gcc -E test.c -o test.i
4.選項 -O:使用編譯優化級別1編譯程序。級別為1~3,級別越大優化效果越好,但編譯時間越長。
gcc -O1 test.c -o test
**如果有多個源文件,基本上有兩種編譯方法:**
【問題】假設有兩個源文件為test.c和testfun.c
1.多個文件一起編譯:將testfun.c和test.c分別編譯后鏈接成test可執行文件。
多個文件一起編譯:將testfun.c和test.c分別編譯后鏈接成test可執行文件。
2.分別編譯各個源文件,之后對編譯后輸出的目標文件鏈接。
gcc -c testfun.c #將testfun.c編譯成testfun.o
gcc -c test.c #將test.c編譯成test.o
gcc -o testfun.o test.o -o test #將testfun.o和test.o鏈接成test
以上兩種方法相比較,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的文件,未修改的文件不用重新編譯。
- g++的使用
鏈接:Linux的g++的使用