在stm32单片机的库文件里有这么一段u8和u16的定义
typedef uint8_t u8;
typedef uint16_t u16;
而uint8_t和uint16_t的定义是这样的
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
意味着u8就是就是指代的unsigned char
意味着u16就是就是指代的unsigned short int
C语言之数据类型详解_c语言数据类型_supergirl091的博客-CSDN博客
为什么这么定义?
u8-----可以理解为无符号的8位2进制的数据,就是11111111-00000000,注意这里全部是正数,没有负数,第一位并不是符号位,u就是unsigned char的首字母,8就是8个位的意思。
u16同理
这种写法能很容易的表明有几个位,8位?16位?而最常见的数据类型就是无符号,所以u8的使用频率非常高,每次都老老实实的写unsigned char有点太烦人了,于是用u8来替代,简明易懂。
在单片机和操作系统中 typedef 会经常用到,它可以为某一个类型自定义名称。和#define比较类似。但是又有不同的地方。
typedef 创建的符号只能用于数据类型,不能用于值。而#define 创建的符号可以用于值。
typedef 是由编译器来解释,而不是预处理器。
typedef 使用起来更加灵活。
typedef的4种常见用法:
一、给已定义的变量类型起个别名
二、定义函数指针类型
三、定义数组指针类型
四、定义数组类型
总结一句话:“加不加typedef,类型是一样的“,这句话可以这样理解:
没加typedef之前如果是个数组,那么加typedef之后就是数组类型;
没加typedef之前如果是个函数指针,那么加typedef之后就是函数指针类型;
没加typedef之前如果是个指针数组,那么加typedef之后就是指针数组类型;
typedef的4种常见用法_暴躁的野生猿的博客-CSDN博客