typedef

关键字的作用是取别名

  • 为数据类型取别名:typedef unsigned char BYTE; 则BYTE=unsigned char
  • 为自定义数据结构取别名:在结构体定义前加上该关键字,创建该类型变量时可以省略struct

原:struct Books{} struct Books book;
简:typedef struct Books{} Books book;

#define

  • 被define取过的别名标识符不能再使用了 如为常量3.14取别名PI 那PI这个标识符不能再用于定义变量了,也不能用于定义函数等等

是c指令,也可用于为各种数据类型定义别名。但是还可以定义常量。typedef则不能

  • 为数据类型取别名:#define BYTE unsigned char
  • 为变量取别名:#define a PAI ... int a=3.14 printf(PAI)->3.14
  • 为常量取别名:#define PI 3.14

  • typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。
  • 注意取别名时typedef是**原名前别名后**#define是**别名前原名后**
  • 在类型上typedef的功能远比define强大得多