C語言中 和 用法

2021-07-02 21:29:30 字數 1043 閱讀 6581

一、基本的用法

1、#——引數名以#作為字首則結果將被擴充套件為由實際引數的帶引號的字串。 如:12

3456

78

#define dprint(expr)printf(#expr"=%d\n",expr);

intmain()

上面的例子會列印出: a/b=2

2、##——預處理器運算子##為巨集提供了一種連線實際引數的手段。如果替換文字中的引數與##相鄰,則該引數將被實際引數替換,##與前後的空白將被刪除,並對替換後的結果重新掃瞄。 形成乙個新的標號,如果這樣產生的記號無效,或者結果依賴於##運算順序,則結果沒有定義。 如:

#definepaste(front,back)front##back

因此,巨集呼叫paste(name,_xiaobai)的結果為name_xiaobai. 如:12

3456

78910

1112

#define createfun(name1,name2)\

voidname1##name2()\

createfun(the,function);

intmain()

輸出的結果是:thefunctioncalled

二、##可以巢狀嗎? 看下面的例子:

#define cat(x,y)x##y

巨集呼叫cat(var,123)講生成var123. 但是,巨集呼叫cat(cat(1,2),3)沒有定義:##阻止了外層呼叫的引數的擴充套件。因此,它將生成下列的記號串: cat(1,2)3.

如果要再引入第二層的巨集定義,如下定義: #define xcat(x,y)cat(x,y) 那麼xcat(xcat(1,2),3)將生成123, 這是因為xcat自身的擴充套件不包含##運算子。

C語言中 和 的用法

今天在看freertos 看到如下 開機初始化 log create module template,print level info 巨集定義 define log create module module,level log control block t log control block m...

C語言中 和 的用法

使用 把巨集引數變為乙個字串,用 把兩個巨集引數貼合在一起.include includeusing namespace std define str s s define cons a,b int a e b int main 當巨集引數是另乙個巨集的時候,需要注意的是凡巨集定義裡有用 或 的地方...

c語言中 和 的用法

原文有些錯誤,修正一下。一 一般用法 我們使用 把巨集引數變為乙個字串,用 把兩個巨集引數貼合在一起.用法 include include define str s s define cons a,b int a e b int main 二 當巨集引數是另乙個巨集的時候 需要注意的是凡巨集定義裡有...