在c/c++中經常可以看到各種巨集,現對巨集的妙用做一些使用總結。
一、防止標頭檔案的重複包含:
#ifndef __***x_h__
#define __***x_h__
......
#endif
二、條件編譯,根據條件選擇性編譯插入**:
#ifdef _unicode
#define _t(x) l##x //如果定義了_unicode巨集則使用l把字串連線起來, 譬如l"abc"
#else
#define _t(x) x
#endif
三、定義常量,但在c++中不建議使用巨集來定義常量,最好使用關鍵字const:
#define pi 3.14
#define me "我"
四、定義巨集替換函式:
#ifdef _add_
#define calc(x, y) add(x, y)//如果定義了_add_,則呼叫sub函式,否則呼叫div函式
#else
#define calc(x, y) sub(x, y)
#endif
int add(int x, int y)
int sub(int x, int y)
int main()
五、使用巨集定義函式:
譬如我們使用getprocaddress獲取函式指標時,如果使用定義巨集函式就可以簡化函式指標的獲取
typedef int (_stdcall *padd)(int a, int b);//定義函式指標型別, 注意這裡的"padd"中的'p'要與巨集中的一致
typedef int (_stdcall *psub)(int a, int b);
//獲取函式指標
#define getfunctionpointer(h, x)\
\ x = (p##x)::getprocaddress(h, #x);\
}\int main()
六、##與#組合巨集
#define _link_(x, y) x##y //把x y進行連線在一起
#define to_str(x) #x //把x加雙引號""
int main()
以上幾種巨集的使用是經常會用的,當然還有變參巨集等等其他一些用法,可以參考msdn。
C語言基礎之帶引數的巨集
像函式的巨集 define cube x x x x 巨集可以帶引數 例 include define cube x x x x int main int argc,char const ar 在這個巨集中,編譯預處理時,會將所有的cube x 替換成 x x x 其中x是引數 錯誤定義的巨集 de...
c 巨集的使用
習慣上,巨集定義的最後一句話,不加 這樣的話,我們在使用巨集的時候就需要在後面加上 與一般的c 語法一致 1 有一些類我們不允許copy and assign,在這種情況下,我們可以使用巨集來解決這個問題 一般方法 這是在.h檔案的巨集定義,在特定的類宣告中,加入巨集即可 define disabl...
c語言基礎 巨集
在 c 語言中,可以採用命令 define 來定義巨集。在定義了巨集之後,無論巨集名稱出現在源 的何處,預處理器都會把它用定義時指定的文字替換掉。define 巨集名稱 替換文字 define print printf hello world define 巨集名稱 形參列表 替換文字 define...