#表示:對應變數字串化
##表示:把巨集引數名與巨集定義**序列中的識別符號連線在一起,形成乙個新的識別符號
連線符#@:它將單字元標記符變換為
單字元,即加單引號。例如:
#define b(x) #@x
則b(a)即'a',b(1)即'1',但b(abc)卻不甚有效。
[cpp]view plain
copy
#include
#define trace(x, format) printf(#x " = %" #format "\n", x)
#define trace2(i) trace(x##i, d)
int_tmain(
intargc, _tchar* argv)
輸出結果:
i = 1
x = 2.000000
s = three
x1 = 1
x2 = 2
x3 = 3
C C C 宣告和定義的區別
1.定義也是宣告,extern宣告不是定義,即不分配儲存空間。extern告訴編譯器變數在其他地方定義了。extern int i 宣告,不是定義 int i 宣告,也是定義2.如果宣告有初始化式,就被當作定義,即使前面加了extern。只有當extern宣告位於函式外部時,才可以被初始化。exte...
巨集定義中的 和 的區別
代表和乙個字串相連線 代表和乙個符號連線,符號可以是變數,或另乙個巨集符號。舉例如下 巨集定義如下 1 define dev file name dev test kft define open file fd,n 如此呼叫 open file fd1,1 open file fd2,2 open ...
巨集定義中的 和 的區別
剛才測試了巨集定義中的 和 的區別,希望能對大家有點幫助。結果如下 代表和乙個字串相連線 代表和乙個符號連線,符號可以是變數,或另乙個巨集符號。舉例如下 巨集定義如下 1 如此呼叫 用gcc e展開後,如下 如果沒有定義dev file name 就是 所以可以很清楚的看出 n 解析出來的是 n 用...