巨集定義中的 和 的區別

2021-05-01 06:42:10 字數 534 閱讀 6019

剛才測試了巨集定義中的 "#" 和 "##" 的區別,希望能對大家有點幫助。

結果如下:

"#" 代表和乙個字串相連線

"##" 代表和乙個符號連線,符號可以是變數,或另乙個巨集符號。

舉例如下:

巨集定義如下

(1)

如此呼叫:

用gcc -e展開後,如下

如果沒有定義dev_file_name ,就是

所以可以很清楚的看出#n 解析出來的是"n" , 用於連線乙個已有的字串。

(2) 再來看 ## 是什麼意思, 巨集定義如下:

呼叫方式相同。

看巨集展開:

現在看清楚了, ##n 的作用是把n直接連線在了乙個符號的末尾. 好, 現在我們定義乙個符號看看效果。

再展開:

很顯然第乙個符號被替換了, 因為是符號是巨集的緣故。 這樣我們也能把這一擴充套件特性應用在變數上。

巨集定義中的 和 的區別

代表和乙個字串相連線 代表和乙個符號連線,符號可以是變數,或另乙個巨集符號。舉例如下 巨集定義如下 1 define dev file name dev test kft define open file fd,n 如此呼叫 open file fd1,1 open file fd2,2 open ...

巨集定義中的 和 的區別

代表和乙個字串相連線 代表和乙個符號連線,符號可以是變數,或另乙個巨集符號。舉例如下 巨集定義如下 1 define dev file name dev test kft define open file fd,n 如此呼叫 open file fd1,1 open file fd2,2 open ...

c C C 巨集定義中 的區別

表示 對應變數字串化 表示 把巨集引數名與巨集定義 序列中的識別符號連線在一起,形成乙個新的識別符號 連線符 它將單字元標記符變換為 單字元,即加單引號。例如 define b x x 則b a 即 a b 1 即 1 但b abc 卻不甚有效。cpp view plain copy include...