以下内容为自学笔记缺乏严谨性,如有错误和不足请大佬指正
(1)#define与#include在预处理时的不同作用?
#define是对文件内容进行查找替换,#include是将引用的头文件进行复制粘贴进当前文件
(2)参数宏的用法与注意事项
在define标识后不要加';' 除非你要替换的语句本来就要加';'.
#define ADD(A,B) A + B
#define SIZEOF(ARR) sizeof(ARR)/sizeof(ARR[0])
(3)举例: 宏的嵌套定义是什么?
#define PRINT printf("hello world!");
#define P5 PRINT PRINT PRINT PRINT PRINT
#define P10 P5 P5
宏的嵌套定义就是可以给宏在套上一个宏,这里 宏PRINT是输出"hello word!",宏P5就是5个PRINT也就是输出5次"hello word!",宏P10是两个P5就是输出10次"hello word!".
(4)宏定义类型与typedef定义类型的区别?
宏定义类型只是简单的文本替换,而typedef是对类型的重命名.
#define D_P_INT int*
typedef int* P_INT;
int* m1, m2, m3;//只有m1是int*,m2,m3是int
D_P_INT m1, m2, m3;//只有m1是int*,m2,m3是int
P_INT n1, n2, n3;//全部为int*类型
这里 D_P_INT 替换的是 int* 所以第二行与第一行效果相同,而typedef是对类型的重命名所以第三行定义的所有变量都是int*.