- 相關推薦
簡單講解C語言中宏的定義與使用
宏定義是預編譯功能的一種, 預編譯又稱為預處理, 是為編譯做的預備工作的階段。處理#開頭的指令, 比如拷貝 #include 包含的文件代碼,#define宏定義的替換,條件編譯等。
使用宏定義的好處:使用宏定義的好處:可提高程序的通用性和易讀性,減少不一致性,減少輸入錯誤和便于修改。例如 π 這個常量,我們有時候會在程序的多個地方使用,如果每次使用都重新定義,一來比較麻煩,二來容易出錯,所以我們可以把 π 做成宏定義來使用。
語法說明:
(1)宏名一般用大寫
(2)使用宏可提高程序的通用性和易讀性,減少不一致性,減少輸入錯誤和便于修改。例如:數組大小常用宏定義
(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。
(4)宏定義末尾不加分號;
(5)宏定義寫在函數的花括號外邊,作用域為其后的程序,通常在文件的最開頭。
(6)可以用#undef命令終止宏定義的作用域
(7)宏定義可以嵌套
(8)字符串" "中永遠不包含宏
(9)宏定義不分配內存,變量定義分配內存。
定義:
#define 宏名 內容#define kArrLen 10 // OC駝峰命名法:首字符為k,其他單詞首字符大寫#define ARR_LEN 10 // C語言中的宏命名規范:所有字母大寫,單詞用下劃線分隔
例如:
#define PI 3.1415926
我們就可以使用 PI 來代替 3.1415926 即可:
float r = 0.5;float area = PI * r * r;printf("area = %fn", area);
在程序預編譯階段會把 PI 替換成 3.1415926:
float area = 3.1415926 * r * r;
宏定義內容很簡單,也很好理解,但是有幾個如下的注意事項:
1、因為宏定義只是簡單的替換,如果宏定義的內容有運算的時候,要把每個變量加上括號,以免影響運算的優先級
比如:#define MUL(A, B) (A * B)
使用方法:
MUL(3 + 5, 5 + 6) //會替換成 3 + 5 * 5 + 6 = 34
我們希望(3 + 5) * (5 + 6),所以定義宏定義的時候應該:
#define MUL(A, B) ((A) * (B))
2、注意宏定義后面沒有分號(;),它不是一條語句
3、宏定義是在程序編譯前期進行替換,此時程序還沒有編譯
【簡單講解C語言中宏的定義與使用】相關文章:
C 語言中宏的使用08-02
C語言中的預編譯宏定義02-26
C語言中如何定義函數式宏02-15
C語言宏定義07-01
C語言的宏定義分析01-29
C語言宏定義技巧01-11
C語言預定義宏用法04-15
關于C語言宏定義的技巧05-11
C語言中assert的用法講解03-19