宏定義
為一段代碼定義一個標(biāo)識, 在編譯之前將使用宏名的地方替換為宏值,這個替換的過程叫宏替換也叫宏代換
#define 宏名 宏值
#define typeLength 10
#define Max(a,b) a > b ? a : b
注意:
- 宏值可以是任意 C 代碼,在定義宏的時候,并不會檢查語法,只有在宏替換的時候才檢查語法
- 宏值如果是表達(dá)式,最好用括號括起來,因為在宏替換的時候可能會出現(xiàn)運(yùn)算符優(yōu)先級的問題
- 宏值里如果使用了變量名,一定在使用的時候,保證該變量已定義
- 宏名不是變量, 不能通過賦值符號去改變值
- 宏可以定在任意的地方(方法內(nèi)和方法外),如果定義在方法內(nèi),出了大括號也可以使用,因為它不是變量。 宏從定義開始到文件結(jié)束,都是可以使用??梢允褂?
#undef typeLength來使宏失效 - 不要和 typedef 搞混哈~ 給類型起別名和預(yù)處理指令的宏定義沒關(guān)系哈~
- 帶參數(shù)的宏,不需要寫形參的類型
- 宏值里面有換行的話, 就代表這個宏的定義結(jié)束了