巨集定義中 與 的用法

2021-04-24 02:11:55 字數 544 閱讀 9730

巨集定義中#的功能是將其後面的巨集引數進行字串化操作(stringfication),舉個例子就明白了:

#define warn_if(exp)     /

do    /

while(0)

使用warn_if (divider == 0);

被替換為

do while(0);

ok,講##了,連線符(concatenator),用來將兩個token連線為乙個token,例子出發:

#define link_multiple(a,b,c,d) a##_##b##_##c##_##d

使用typedef struct _record_type link_multiple(name,company,position,salary);

這裡這個語句將展開為:

typedef struct _record_type name_company_position_salary;

...在c巨集中稱為variadic macro,也就是變參巨集。

具體方法以後再學習。因為今天沒有時間,哈哈。

關於巨集定義中 與 的用法

巨集在條件編譯以及各種大規模的定義裡是非常有用的。前面qt原始碼學習筆記裡就有一篇用來介紹巨集的定義。這次主要介紹下巨集定義裡 的作用。關於巨集,注意可以用gcc e test.cpp來檢視預編譯之後的結果。1.先介紹 主要是字串替換的作用。將傳入的符號轉化為字串 直接上源 define marco...

巨集定義中if語句的用法

當巨集定義中含有 if 時 1 定義如下巨集 define dc p if foo p fun p 用在下面的環境中 if k n dc k else dc n 巨集替換後,如下 if k n if foo k fun k else if foo n fun n 可見,原來的 if 和 else 不...

巨集定義的用法

有五種用法,含有引數和不含引數,行尾都不用加分號 define 識別符號 替換列表 類似於全域性變數了 如果其他檔案沒有包含定義巨集的檔案,則在巨集定義的位置結束,如果有包含,則到包含的檔案結束 define largest num 1000 define 識別符號 引數列表 替換列表 注意,替換列...