(1)语法形式
typedef 是 C语言的关键字,用于创建类型别名,它需要使用标识符和现有的类型进行配合;#define 是预处理指令,用于创建宏定义,它可以定义任意的标识符和文本替换。
(2)用法不同
typedef 用来定义一种数据类型的别名,增强程序的可读性;#define 主要用来定义常量,以及书写复杂使用频繁的宏。
(3)执行时间不同
typedef 是编译过程的一部分,有类型检查的功能;#define 是宏定义,是预编译的部分,其发生在编译之前,只是简单地进行字符串的替换,不进行类型检查。
(4)作用域不同
typedef 有作用域限定,#define 不受作用域约束,只要是在 #define声明后的引用都是正确的。
【注意】typedef 定义是语句,因为句尾要加上分号,而 #define 不是语句,千万不能在句尾加分号。