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