C語言巨集替換

2022-03-08 03:49:58 字數 435 閱讀 3521

當乙個巨集引數被放進巨集體時,這個巨集引數會首先被全部展開(有例外,見下文)。當展開後的巨集引數被放進巨集體時,

預處理器對新展開的巨集體進行第二次掃瞄,並繼續展開。例如:

#define param( x ) x

#define addparam( x ) int_##x

param( addparam( 1 ) );

因為addparam( 1 ) 是作為param的巨集引數,所以先將addparam( 1 )展開為int_1,然後再將int_1放進param。

例外情況是,如果param巨集裡對巨集引數使用了#或##,那麼巨集引數不會被展開:

#define param( x ) #x

#define addparam( x ) int_##x

param( addparam( 1 ) ); 將被展開為"addparam( 1 )"。

C語言中的巨集替換

define替換規則 在程式中擴充套件 define定義符號和巨集 1.在呼叫巨集時,首先對引數進行檢查,看看是否包含任何由 define定義的符號,其首先被調換 2.替換文字隨後被插入到程式中原來文字的位置,對於巨集,引數名被他們的值替換 3.最後再次對結果檔案進行掃瞄,看看它是否包含任何由 de...

c語言中的巨集替換

define替換規則 在程式中擴充套件 define定義符號和巨集 1.在呼叫巨集時,首先對引數進行檢查,看看是否包含任何由 define定義的符號,其首先被調換 2.替換文字隨後被插入到程式中原來文字的位置,對於巨集,引數名被他們的值替換 3.最後再次對結果檔案進行掃瞄,看看它是否包含任何由 de...

C 中的巨集替換

1.引子 define cat x,y x y 那麼cat a,b 和cat cat a,b c 的結果是啥.define str impl x x define str x str impl x 的意圖何在.2.規則 巨集替換是c c 的預處理中的一部分,在c 標準中有4條規則來定義替換.規則1 ...