在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”.
宏定义是由源程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的....tips:宏的名称中不允许有空格,而且必须遵守C变量的命名规则:只能使用字符,数字和下划线( _ )字符,而且首字符不能是数字.
第3部分
(指令行的其余部分)称为替换列表或替换体....一旦预处理器在程序中找到宏的示实例后,就会用替换体代替该宏.
从宏变成最终替换文本的过程称为宏展开.
注意,可以在#define行使用标准C注释.每条注释在预处理后都会被一个空格代替....一般而言,预处理器发现程序中的宏后,会用宏等价的替换文本进行替换,如果替换的字符串中还包含宏,则继续替换这些宏....表达式的求值结果更容易预 测。
带 有 副 作 用 的 参 数 参数可能被替换到宏体中的多个位置,所以带有副作 用的参数求值可能会产生不可预料的结果。