【C语言】Define与Typedef区分

发布时间:2026/9/2 21:39:16
【C语言】Define与Typedef区分 #define 与 typedef 完整区别C语言1.本质不一样#define 宏定义预处理指令#define INT int- 预处理阶段简单文本替换无脑字符串复制没有类型检查- 不属于C语句末尾不要分号加了分号分号也会被替换进去typedef类型重定义typedef int INT;- 编译阶段给已有数据类型起一个别名是编译器认可的类型名- 属于关键字后面必须加分号#define P_INT int*P_INT a,b;// 展开后int* a,b;// a是指针b只是普通inttypedef int* P_INT;P_INT a,b;// a、b全都是 int* 指针宏是无脑替换typedef才是真正类型别名#define P_INT int*const P_INT p;//展开: const int* p; 指针可改指向内容不可改typedef int* P_INT;const P_INT p;//等价于 int* const p; 指针本身不可修改//typedeftypedef struct{int x;}Point;Point p1;//#define#define Point struct{int x;}Point p1;结构体这里两者效果勉强一样但推荐typedef对比项#definetypedef阶段预处理文本替换编译类型别名分号不能加;必须加;指针多行声明会出错所有变量都是指针类型const修饰效果不一样把整个类型绑定作用范围全局无脑替换类型编译器识别