宏
概念:被定义的宏的标识符称为宏名,在编译预处理时,对程序中所有出现的宏名都用宏定义中的字符串取代换 称之为你宏代换 或宏展开
宏定义:是由源程序中的宏定义命令完成的。宏代换是有预处理程序自动完成的。
#define 宏名 宏字符串(可以是敞亮。变量,表达式)
#define 标识符 字符串
注意:预处理指令,经常写在函数之前
宏不是一个语句,是一个预处理指令,所以后面不用加分号结束
宏是有作用域的;从宏开始的位置开始到最后
字符串中出现的宏不会被替换
#endef M 表示取消宏的定义
宏定义允许嵌套 #define M 2 #define S 5 #define PI M*S
使用宏可以起别名 #define INT1 int INT1 a=1;
习惯大写
宏替换
源程序在编译之前,有预处理程序对源代码中所有出现宏名的地方,用宏的字符串替换
#define p struct Student
#define M 29
#define M1 y*y+3*y
Int a[M];
Int y=3,result;
result =3*M1+2*M1-50;//注意:::::
Result =13;
有参数的宏:::
#define SUM(a) a+a
Int a=SUM(3) // 不仅要a+a 替换 好要把实参3带入到字符串中
a=6
注意::
1.带参宏定义中,形参之间可以出现空格,但是宏名和形参表之间不能有空格出现
2.有宏参宏的参数最好用括号括起来#define SUM(a) (a)+(a)
#define 和typedef的区别
宏定义表示数据类型,typedef 定义说明符的区别 宏定义只是简单的字符串代表,是预处理完成的,而typedef 是在编译时处理的,他不是简单的代换,而是对类型说明股重新命名,被命名的标识符具有类型定义说明的功能。 |
|