ANSI C規定:#前可以有空格或者tab,#和指令其余部分之間也可以有空格,可以出現在任何地方,作用域從定義處到文件結尾。
因為預處理開始前,系統會刪除反斜線和換行符的組合,故可以把指令擴展到幾個物理行,這些物理行組成單個邏輯行。
//每個#define行(指邏輯的行):三部分組成 //指令本身 宏 替換列表(或主體) #define PI 3.141592653
宏分為類對象宏(代表值的宏)和類函數宏
宏的名字中間不能有空格,必須遵循c命名規則,從宏變成最終的替換文本叫宏展開,預處理器不進行計算,只是簡單的文本替換
語言符號類型字符串和字符型字符串
系統把主體當作語言符號類型字符串,而不是字符型字符串,預處理器中的語言符號是宏定義主體裡的單獨的詞,用空白字符把這些詞分開。
#define SIX 2*2//定義裡有一個語言符號,序列2*2 #define AAA 2 * 2//定義裡有三個語言符號,2,*,3