巨集定義的一些特殊用法

2021-08-27 07:04:15 字數 452 閱讀 4127

1、有參巨集定義中#的用法  

#definestr(str)#str  

#用於把巨集定義中的引數兩端加上字串的""  

比如,這裡str(my#name)會被替換成"my#name"  一般由任意字元都可以做形參,但以下情況會出錯:  str())這樣,編譯器不會把「)」當成str()的引數。  str(,)同上,編譯器不會把「,」當成str的引數。  str(a,b)如果實參過多,則編譯器會把多餘的引數捨去。(vc++2008為例)  str((a,b))會被解讀為實參為:(a,b),而不是被解讀為兩個實參,第乙個是(a第二個是b)。  

2、有參巨集定義中##的用法  #definewide(str)l##str  則會將形參str的前面加上l  比如:wide("abc")就會被替換成l"abc"  如果有#definefun(a,b)vo##a##b()  那麼fun(idma,in)會被替換成voidmain()

C C 巨集的一些特殊用法

在c c 中,巨集定義是由define完成的,define中有三個特殊的符號值得我們注意 1.在巨集展開的時候會將 後面的引數替換成字串,如 define p exp printf exp 呼叫p asdfsadf 的時候會將 exp換成 asdfsadf 2.將前後兩個的單詞拼接在一起。例如 th...

巨集定義的一些用法

c及c 通過預處理器提供了一些語言功能,最常用的有 include指令,用於包含標頭檔案,其他如 define及巨集定義,也被稱為巨集替換,當編譯器編譯到帶巨集定義的語句時,會直接替換為定義語句.例如,假如我定義有 define maxlength 100,那麼,在編譯器編譯到所有maxlength...

C語言巨集定義的一些用法

do while 0 在巨集定義中合理使用do while 0 可以更規範地使用巨集定義 沒有使用do while 0 前 define led on int main void 多了個分號 使用do while 0 define led on dowhile 0 int main void whi...