C 基礎之巨集的使用

2021-07-11 19:55:19 字數 1347 閱讀 8147

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