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...