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
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
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!
void swap(int *x, int *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!