簡略講授C說話中宏的界說與應用。本站提示廣大學習愛好者:(簡略講授C說話中宏的界說與應用)文章只能為提供參考,不一定能成為您想要的結果。以下是簡略講授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 = %f\n", 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、宏界說是在法式編譯後期停止調換,此時法式還沒有編譯