- 程式 prepro1.c 定義
happy_for(name)
以 stringize #
預處理運算子轉換參數 name 為字串。命令執行外加參數若等於 5 則 name 取代成 Mother,8 則取代成 Father,輸出範例如下,其中日期是使用預定義巨集 __DATA__
輸出今天的日期 Aug 9 2019,當參數不等於 5 或 8 時,印出「Only 5 8」,印出結束要換行,編譯成可執行檔 prepro1。
./prepro1 5 8 3
Happy Mother's Day! Aug 9 2019
Happy Father's Day! Aug 9 2019
Only 5 8
- 程式 prepro2.c 定義
tokenpast(N)
以 token pasting ##
預處理運算子組合 token 跟 n,宣告 int token1=10, token2=11, token3=21 三個變數,執行 tokenpast(N) 印出 tokenN * 2 = xx
,N 由命令執行外加第一個參數取得,且只能 1, 2, 3,其他輸出「only 1 2 3」,輸出如下範例,其中小括號內的日期是使用預定義巨集 __DATA__
輸出今天的日期。印出結束要換行,編譯成可執行檔 prepro2。
./prepro2 1 2 3 5
token1 * 2 = 20 (Aug 9 2019)
token2 * 2 = 22 (Aug 9 2019)
token3 * 2 = 42 (Aug 9 2019)
Only 1 2 3
- 程式 prepro3.c 定義
MIN(x,y)
回應較小的數字,x, y 兩個數字由命令執行外加第一及二個參數取得,輸出如下範例,其中小括號內的日期是使用預定義巨集 __DATA__
輸出今天的日期,當輸入參數有任何一個不是數字,則輸出「x or y NOT a number!」且回傳非 0 的錯誤碼,印出結束要換行,編譯成可執行檔 prepro3。
./prepro3 11 22
MIN between 11 and 22 is 11 (Aug 9 2019)
./prepro3 11 a
11 or a NOT a number!
- 多檔程式
- 在目前錄下建一標頭檔 swap.h。
void swap(int *x, int *y);
- 在目前錄下撰寫程式 swap.c 包含函式 swap(*x, *y) 將 x, y 的值對調。
- 主程式 prepro4.c 將 swap.h include 進入程式,call for reference 方式呼叫 swap 後印出 x + y*2 的結果,數字 x, y 由命令執行外加第一及二個參數取得,輸出如下範例,其中小括號內的日期是使用預定義巨集
__DATA__
輸出今天的日期,當輸入參數有任何一個不是數字,則輸出「x or y NOT a number!」且回傳非 0 的錯誤碼,印出結束要換行,編譯成可執行檔 prepro4。
./prepro4 2 5
After swap, 5 + 2*2 = 9 (Aug 9 2019)
./prepro4 2 b
2 or b NOT a number!