C 語言中宏的使用

來源:文萃谷 4.08K

宏的主要作用是在編譯預處理時,對程序中所有出現的“宏名”都用宏定義中的字符串去代換 。

C 語言中宏的使用

宏定義是由源程序中的宏定義命令完成的,宏代換是由預處理程序自動完成的。在 C 語言中,“宏”分為有參數和無參數兩種,即分別簡稱為有參宏和無參宏。

無參宏

無參宏的宏名後不帶參數,其定義的一般形式為:

#define 標識符 字符串

其中的 “#” 表示這是一條預處理命令,凡是以 “#” 開頭的均為預處理命令。“define” 為宏定義命令,“標識符” 為所定義的宏名稱,“字符串” 可以是常數、表達式、格式串等 。

#include#define NUM 4int main(int argc, const char * argv[]) { int a = 4;

a *= NUM; printf("%d ", a); return 0;

}

運行結果:16 。這裏可以看出我們定義了一個宏名稱為 NUM 的宏,當 main 中代碼出現 NUM 的地方,就會自動用數字 4 進行替換,這樣做的好處是當代碼中多處存在同一變量時,只需要修改宏 NUM 的值即可,而無需在代碼中一處處的'進行修改 。

  有參宏

C 語言允許宏帶有參數,在宏定義中的參數稱為形式參數,宏調用中的參數稱為實際參數 。

對帶參數的宏,在調用中,不僅要宏展開,而且要用實參去代換形參 。

帶參宏定義的一般形式為:

#define 宏名(形參表) 字符串

示例代碼:

#include#define SUM(a) a+aint main(int argc, const char * argv[]) { int a = SUM(4); printf("%d ", a); return 0;

}

運行結果:8 。這裏可以發現 SUM 將 4 傳入,通過 a + a ,即 4 + 4 = 8 。

熱門標籤