#define
#define
宏用于定义预处理的替换规则
简单来说,#define 就是最简单的字符串替换 #define ll long long 就会把程序中所有的 ll 替换成 long long 而程序在运行时根本不会出现过 ll 他把 ll 默认理解为 long long
在一些c语言考试中可能会出一些 #define b a*5 #define a 2+3 问你输出b的值为多少,不要擅自把a理解为2+3=5,而是把他全都替换掉b=2+3*5=17,到这里,你可能就能理解替换的概念了
代码在正式编译前的预处理阶段,预处理器会根据代码中所有"#define"宏定义进行严格的替换,从该宏定义开始的地方起到文件结束或遇到对应的"#undef"指令为止
如果代码中有跟宏定义相关错误,则会在预处理阶段报错
typedef=type+def
"typedef"操作基于现有数据类型定义一个新的数据类型,原有数据类型依然存在,其会在编译阶段由编译器识别并处理。typedef int INT 这时INT就是一个int型的数据类型
typedef语句=typedef + 变量定义语句
去掉typedef,这个语句定义了一个变量
加上typedef,这个变量是什么类型,那它就变成了这个类型的别名
另外
typedef在定义指针的时候
typedef char *ch;
ch a,b;
你定义了两个char *型的变量是完全没有问题的,但是你要是用#define 的话
#define ch char *
ch a,b;
就相当于是char *a,b; 你b的数据类型变成了char
来源:https://www.cnblogs.com/YangKun-/p/12518983.html