C語言中的 ,

2021-10-12 19:02:06 字數 1005 閱讀 1949

#用來把引數轉換成字串,請看下面的兩個例子。

例子一:

例子二:

#define sqr(x) printf("the square of x is %d.\n", ((x)*(x)));
如果這樣使用巨集:sqr(8);

則輸出為:the square of x is 64.

注意到沒有,引號中的字元x被當作普通文本來處理,而不是被當作乙個可以被替換的語言符號。

假如你確實希望在字串中包含巨集引數,那我們就可以使用「#」,它可以把語言符號轉化為字串。上面的例子改一改:

#define sqr(x) printf("the square of "#x" is %d.\n", ((x)*(x)));
再使用:sqr(8);

則輸出的是:the square of 8 is 64.

和#運算子一樣,##運算子可以用於巨集函式的替換部分。這個運算子把兩個語言符號組合成單個語言符號。看例子:

#define xname(n) x ## n
如果這樣使用巨集:xname(8)

則會被展開成這樣:x8

##就是個粘合劑,將前後兩部分粘合起來,也就是有「字元化」的意思。但是「##」不能隨意粘合任意字元,必須是合法的c語言標示符。在單一的巨集定義中,最多可以出現一次「#」或「##」預處理操作符。如果沒有指定與 「#」或「##」預處理操作符相關的計算次序,則會產生問題。為避免該問題,在單一的巨集定義中只能使用其中一種操作符(即,乙份「#」或乙個「##」,或都不用)。除非非常有必要,否則盡量不要使用「#」和「##」。

C語言中的 ,

c語言中的 今天在分析乙份原始碼的時候遇到了如下 define uf call x report file line x,x static int report char file,int line,char call,int irc return irc 網上參考 cpp view plain c...

C語言中的

c語言中的 今天在分析乙份原始碼的時候遇到了如下 覺得其中的 很有意思,於是就將這個知識點整理一下。和 都是預處理指令,我們先看 用來把引數轉換成字串,請看下面的兩個例子。例子一 例子二 define sqr x printf the square of x is d.n x x 如果這樣使用巨集 ...

C語言中的物件導向 C語言中的類模擬

在物件導向的語言裡面,出現了類的概念。這是程式設計思想的一種進化。所謂類 是對特定資料的特定操作的集合體。所以說類包含了兩個範疇 資料和操作。而c語言中的struct僅僅是資料的集合。li 1978 163.com 1 例項 下面先從乙個小例子看起 ifndef c class define c c...