typedef作用:为一种数据类型起别名
①简化一些复杂的类型声明
typedef void (*fun)(int a);//为函数指针void (*)(int a)起别名fun
typedef struct student{}*stu;//为结构体指针struct student{}*起别名stu
fun p;//定义函数指针时p
②定义与平台无关的数据类型
例如,A平台64位数据类型为 long double,而B平台的64位数据类型为double,那么基于A平台开发的程序就不能在B平台运行,
在程序设计时,凡是64位数据的定义都是用一个别名REAL表示
typedef long double REAL;
typedef double REAL;
因此,当跨平台时,只需修改typedef本身就行,不需对其他源码做任何修改。
举例:STM32/I.MX6ULL等芯片开发时,会在头文件中作以下定义:
typedef unsigned char u8; // 无符号8位整型变量
typedef char s8; // 有符号8位整型变量
typedef unsigned short u16; // 无符号16位整型变量
typedef signed short s16; // 有符号16位整型变量
typedef unsign