C語言巨集定義 連線符和 符的使用

2021-06-21 20:52:29 字數 1154 閱讀 7770

部分內容**:

看到之前大神的**,很多地方都沒看懂,還是感覺很厲害的樣子,所以開始一點一點的看。先從基本的入手吧,看到一些巨集定義就差了一下。

自定義的解析xml的類,有一些對@property的定義:

@property (nonatomic, property_attribute) property_type property_name; \

- (nsstring*)class_name_of_##property_name;

#define tm_serializable_synthesize(property_type, property_name) \

@synthesize property_name = _##property_name; \

- (nsstring*)class_name_of_##property_name \

##的作用:

##被稱為連線符(concatenator),用來將兩個token連線為乙個token。注意這裡連線的物件是token就行,而不一定 是巨集的變數。比如你要做乙個選單項命令名和函式指標組成的結構體的陣列,並且希望在函式名和選單項命令名之間有直觀的、名字上的關係。那麼下面的**就非常實用:

struct command

;#define command(name)

// 然後你就用一些預先定義好的命令來方便的初始化乙個command結構的陣列了:

struct command commands =

就是連線引數和引數或者是引數和其他字元的功能。

順便說下

#的作用:

在c語言的巨集中,#的功能是將其後面的巨集引數進行字串化操作(stringfication),簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上乙個雙引號。比如下面**中的巨集:

#define warn_if(exp)    do   while(0)
那麼實際使用中會出現下面所示的替換過程:

warn_if (divider == 0);被替換為do  while(0);
這樣每次divider(除數)為0的時候便會在標準錯誤流上輸出乙個提示資訊。

其他的方法就不轉了,直接去原出處看吧。上面有連線。

其他的還有:

C語言巨集定義 連線符和 符的使用

c語言中如何使用巨集c 和c 中的巨集 macro 屬於編譯器預處理的範疇,屬於編譯期概念 而非執行期概念 下面對常遇到的巨集的使用問題做了簡單總結。在c語言的巨集中,的功能是將其後面的巨集引數進行字串化操作 stringfication 簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上乙個...

C語言巨集定義 連線符和 符的使用

c語言中如何使用巨集c 和c 中的巨集 macro 屬於編譯器預處理的範疇,屬於編譯期概念 而非執行期概念 下面對常遇到的巨集的使用問題做了簡單總結。在c語言的巨集中,的功能是將其後面的巨集引數進行字串化操作 stringfication 簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上乙個...

C語言巨集定義 連線符和 符的使用

c語言中如何使用巨集c 和c 中的巨集 macro 屬於編譯器預處理的範疇,屬於編譯期概念 而非執行期概念 下面對常遇到的巨集的使用問題做了簡單總結。關於 和 在c語言的巨集中,的功能是將其後面的巨集引數進行字串化操作 stringfication 簡單說就是在對它所引用的巨集變數 通過替換後在其左...