C C 巨集的一些特殊用法

2022-07-22 04:36:08 字數 655 閱讀 8001

在c/c++中,巨集定義是由define完成的,define中有三個特殊的符號值得我們注意:

1. #:在巨集展開的時候會將#後面的引數替換成字串,如:

#define p(exp) printf(#exp);

呼叫p(asdfsadf)的時候會將#exp換成"asdfsadf"

2. ##:將前後兩個的單詞拼接在一起。例如《the c programming language》中的例子:

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

呼叫cat(var, 123)展開後成為var123.

3. #@:將值序列變為乙個字元

#define ch(c) #@c

呼叫ch(a)展開後成為'a'.

自己寫了一小段測試程式:

#define a(a,b) a##b

#define b(a) #a

#define c(a) #@a

#include

using namespace std;

void main()

結果為:1v1

v在c++面對物件化程式設計還可以這樣用:

#define a

public://此處加一些成員,並且可以在成員名上用##下一些功夫

class object

;

巨集定義的一些特殊用法

1 有參巨集定義中 的用法 definestr str str 用於把巨集定義中的引數兩端加上字串的 比如,這裡str my name 會被替換成 my name 一般由任意字元都可以做形參,但以下情況會出錯 str 這樣,編譯器不會把 當成str 的引數。str 同上,編譯器不會把 當成str的引...

webkit一些特殊用法

關於webkit一些特殊用法。該屬性可以使得一張背景進行放大縮小。定義 webkit border image url top right bottom left stretch stretch 定義邊框的的寬度 border width top right bottom left 另外還有 web...

巨集定義的一些用法

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