c C C 巨集定義中 的區別

2021-08-18 03:53:19 字數 510 閱讀 2235

#表示:對應變數字串化  

##表示:把巨集引數名與巨集定義**序列中的識別符號連線在一起,形成乙個新的識別符號

連線符#@:它將單字元標記符變換為

單字元,即加單引號。例如:

#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 用...