typedef:类型的重定义,可以对已有的类型重定义为新的类型名。
define:宏定义,是在预处理阶段进行展开,不会检查代码错误;在代码中使用的时候注意是单纯的替换(原样替换)。
详细解读:
1. 类型不同
在C语言中
typedef 是关键字,通常用来定义指针 、结构体等类型。
#define 是C预处理指令
2. 处理阶段不一样
typedef 在编译阶段处理。并且具有类型检查功能。
#define 在预处理阶段进行简单的替换,不会进行类型检查。
3. 功能不同
typedef 通常用于 类型定义,比如指针,数组,结构体等。方便记忆和使用。
#define 可以用于 变量定义,编译开关 ,变量和常量。
4. 作用域不同
typedef 具有自己的作用域
#define 没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用。如果需要解除掉之前声明的宏定义 。
可以使用 #undef name,这个命令使预处理器忘记name的所有宏定义。
5 对指针的操作
二者修饰指针类型时,作用不同