两者有时功能重合
#define BYTE unsigned char
typedef unsigned char BYTE;
都是用BYTE替换unsigned char
#define定义宏时,要先写宏再写替换体:#define 宏 替换体
用typedef时,和定义变量类型类似,先写类型再写变量名,最后在最前面加上typedef:typedef 类型 变量名
但也有不同
- 与#define不同,typedef创建的符号名只受限于类型,不能用于值
- typedef由编译器解释,#define由预处理器解释
- 在其受限范围内,typedef比#define更灵活, #define只是单纯替换,不具备把宏解释成一个类型的标识符,但typedef可以