C 常用到的巨集

2021-06-18 02:52:25 字數 1256 閱讀 7792

1. c語言build-in的巨集:__file__,__func__,__function__,__line__,__time__,__date__

2. 編譯器特定的擴充套件的巨集:__linux__,__i386__

3.自定義常用的巨集

自定義的巨集注意事項:引數必須要(),因為引數有可能為表示式,保證運算的優先順序 ;

多語句必須用do{} while(0),且while(0)後不能加分號;

多語句換行必須在後面加上"\";

單語句要加()

(1)swap()巨集的實現,用於交換兩個變數的值

#define swap(x, y) do while(0)

#define swap(x, y) do while(0)

#define swap(x, y) do while(0)

(2)max()和min()巨集的實現,求兩值比較,求最大最小值

#define max(x, y) ((x) > (y) ? (x) : (y))

#define min(x, y) ((x) < (y) ? (x) : (y))

(3)container_of的巨集實現,已知結構體某個成員的位址,求該結構體變數的位址

#define container_of(ptr, type, member) \

(type *)((char *)ptr - (long)(&((type *)0)->member))

(4)求數組成員的個數

#define array_elem_num(arr) (sizeof(arr) / sizeof((arr)[0]))

(5)位元組和kb,mb,gb的轉換

#define kb(n) ((n) << 10)

#define mb(n) ((n) << 20)

#define gb(n) ((n) << 30)

(6)null的定義

#define null ((void *)0)

iOS開發中常用到的巨集定義

字串是否為空 define kstringisempty str str iskindofclass nsnull class str nil str length 1 yes no 陣列是否為空 define karrayisempty array array nil array iskindof...

條件編譯用到的巨集

編碼的時候經常要用到條件編譯,每次都到網上去查比較浪費時間,今天總結一下以備後用 visual c ifdef msc ver 非vc編譯器很多地方也有定義 borland c ifdef borlandc unix windows windows 95 98 me的ver win32 window...

C中常用的巨集

define 定義乙個預處理巨集 undef 取消巨集的定義 include 包含檔案命令 if 編譯預處理中的條件命令,相當於c語法中的if語句 ifdef 判斷某個巨集是否被定義,若已定義,執行隨後的語句 ifndef 與 ifdef相反,判斷某個巨集是否未被定義 elif 若 if,ifdef...