使用預(yù)處理器的兩個(gè)主要原因:
1.一次修改變量,出現(xiàn)的所有的值都會(huì)修改。
講所有常量定義集中在一起。
2.避免函數(shù)調(diào)用開銷。
3.宏定義注意點(diǎn)
1.不能忽視定義中的空格
2.最好將宏定義中每個(gè)參數(shù)都用括號括起來。整個(gè)表達(dá)式的結(jié)果頁用括號括起來。
3.確保調(diào)用宏的參數(shù)中,不存在有副作用的代碼
4.assert宏。可以在出錯(cuò)信息中包含文件名和斷言失敗處的行號。很有用。
5.宏并不是類型定義。
#define T1 struct foo *
typedef struct foo * T2;
T1 a,b; //struct foo * a, b;
T2 a,b; //a ,b都是指向結(jié)構(gòu)的指針。