A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


概念:被定义的宏的标识符称为宏名,在编译预处理时,对程序中所有出现的宏名都用宏定义中的字符串取代换  称之为你宏代换 或宏展开
宏定义:是由源程序中的宏定义命令完成的。宏代换是有预处理程序自动完成的。
#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 是在编译时处理的,他不是简单的代换,而是对类型说明股重新命名,被命名的标识符具有类型定义说明的功能。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马