typedef uint8_t u8;(stm32数据类型)

在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博客

typedef uint8_t u8;(stm32数据类型)_第1张图片

为什么这么定义?

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博客

你可能感兴趣的:(单片机学习笔记,单片机,stm32,嵌入式硬件)