C preprocessor

一直覺得C語言的預處理 器是個美妙而神奇的工具,以後會陸續把自己學到的關於它的新知識總結出來。To be continued aways...

 

 

一、 #define替換Pointer ON C , Ch14.2.2)

程序中擴展#define定義符號和宏時,涉及如下幾個步驟:

(1) 在調用宏時,首先對參數進行檢查,看看是否包含了任何由#define 定義的符號,如果是,它們首先被替換。

(2) 替換文本隨後被插入到程序中原來文本的位置,對於宏,參數被它們的值替代。

(3) 最後,再次到結果文本進行掃描,看看它是否包含了任何由#define 定義的符號,如果是,就重複上述處理過程。

 

看一個例子:

#define _QUOTEME(x) #x
#define QUOTEME(x) _QUOTEME(x)

那麼QUOTEME(__LINE__);將會被替換成字符串“34”(如果當QUOTEME被調用時,__LINE__剛好等於34)
而_QUOTEME(__LINE__);將會直接被替換爲"__LINE__"!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章