1 宏的概念及无参宏定义方法
宏定义是由原程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的。在c语言中,宏分为有参数和无参数两种
2 无参宏定义:后面不带参数,格式如下
#define 宏名 字符串
其中#表示这是一条预处理指令,define为宏定义命令,标识符为宏名,字符串 可以是常数,表达式,格式串
3 宏替换
源程序在编译之前,由预处理程序对我们写的源代码进行处理,会把源代码中所有出现宏名的地方一律使用宏的内容去替换,不会在外围加上括号,如有需要,在定义的时候加上
4 有参宏的定义
#define 宏名(形参表) 字符串
例子:
#define SUM(a) a+a
SUM(3) //不仅要 a+a替换,而且还要把实参3带入字符串中
int n =SUM(3);//n = 6
#define M(x,y) x*y+x+y
int result = M(4,5);// result=29
5 有参宏的使用注意事项
1->宏的形参之间之间可以出现空格,但宏名跟参数之间不能出现空格
2->每个参数最好用括号括起来(如有必要)
3->可以用宏来定义多个语句
6 应用:使用有参宏求最大值
#define MAX(a,b) a>b?a:b
int m = MAX(34,88);//m就是这两个数的最大值
7 #define与#typedef的区别
#define INIT1 int* //定义一个宏,宏名:INIT1
typedef int* TINT; //int起一个别名 TINT
int num=10;
INIT1 a,b; //a是指针,b不是指针
TINT a1,b1; //a,b都是指针
总结:宏定义只是做一个简单的替换,而typedef是给数据类型取了个别名,别名依旧具有数据类型定义说明的功能
|
|