天天看點

編譯預處理 -- 帶參數的宏定義--【sky原創】

如有轉載請注明出處

編譯預處理  --  帶參數的宏定義

前面為輸出檔案,後面為輸入檔案

gcc -E -o test.i test.c

gcc -o test  test.i

test.c

編譯預處理 -- 帶參數的宏定義--【sky原創】

test.i

編譯預處理 -- 帶參數的宏定義--【sky原創】
編譯預處理 -- 帶參數的宏定義--【sky原創】

取消宏定義

#undef 宏名

條件編譯的三種形式

編譯預處理 -- 帶參數的宏定義--【sky原創】
編譯預處理 -- 帶參數的宏定義--【sky原創】
編譯預處理 -- 帶參數的宏定義--【sky原創】
編譯預處理 -- 帶參數的宏定義--【sky原創】

第三種

#if 常量表達式

  源碼1.....

#else // 此部分可選

  源碼2...

#endif

編譯預處理 -- 帶參數的宏定義--【sky原創】

#----表示ABC(a) 即為 a這個字元串

編譯預處理 -- 帶參數的宏定義--【sky原創】
編譯預處理 -- 帶參數的宏定義--【sky原創】

##的用法

A_B(print_, menu)

等價為  print_menu()

編譯預處理 -- 帶參數的宏定義--【sky原創】
編譯預處理 -- 帶參數的宏定義--【sky原創】
編譯預處理 -- 帶參數的宏定義--【sky原創】

__DATE__ 進行預處理的日期,注意是兩個下劃線喔,(“Mmm dd yyyy”形式的字元串文字)

__FILE__ 代表目前源碼檔案名的字元串文字

__LINE__ 代表目前源代碼中的行号的整數常量

__TIME__源碼檔案的編譯時間,格式為: "hh: mm: ss"

__func__ 目前所在函數名

編譯預處理 -- 帶參數的宏定義--【sky原創】
編譯預處理 -- 帶參數的宏定義--【sky原創】

歡迎交流

新浪部落格:http://blog.sina.com.cn/u/2049150530

csdn部落格:http://blog.csdn.net/u011749143

部落格園:http://www.cnblogs.com/sky-heaven/

知乎:http://www.zhihu.com/people/zhang-bing-hua

繼續閱讀