STM32G431学习笔记(一)之typedef的使用

本文介绍了如何在C语言中使用typedef为结构体Btn定义别名,以及如何方便地声明和初始化Btn类型的数组,提高代码的可读性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

typedef struct{
	bool press;
	uint8_t state;
	uint16_t long_time;//按下按键的时间
}Btn;

        在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:

struct 结构体名{结构体所包含的变量或数组};typedef关键字用于为已有的数据类型定义一个新的名称(别名)。

        这里的Btn是定义的新名称(别名),它代表了一个特定的结构体类型。这个结构体包含了三个成员:

  1. press:一个布尔值(bool),用于表示按键是否被按下。
  2. state:一个8位无符号整数(uint8_t),用于表示按键的某种状态(例如,是否正在被按下、释放、单次点击、长按、双击等等)。
  3. long_time:一个16位无符号整数(uint16_t),可能用于表示按下按键的时间(可能是以某种单位,如毫秒),也可能用于判断是否达到了长按的阈值。

        通过定义这个Btn别名,可以更方便地声明这个结构体的变量,而不需要每次都写出完整的struct定义。例如:

Btn myButton;

而不是:

struct {  
    bool press;  
    uint8_t state;  
    uint16_t long_time;  
} myButton;

 所以在STM32中用typedef关键字为已有的数据类型定义一个新的名称后就可以直接用”新名称+一个数组={  }“的方式声明并初始化该数组,并将数组中的所有元素进行初始化。例如:

Btn key[4] = {0}; //声明并初始化一个包含4个Btn类型元素的数组key,并将数组中的所有元素初始化为0

        在这里,Btn是一个之前通过typedef定义的结构体类型别名。key是这个类型的数组,它有4个元素。初始化{0}意味着数组中的每个元素都会被初始化为0。对于结构体来说,如果它没有明确的初始化,那么它的所有成员都会根据其类型进行默认初始化。对于基本数据类型(如booluint8_tuint16_t),默认初始化通常意味着将它们设置为0

        所以,Btn key[4] = {0};将创建一个Btn类型的数组key,数组中的每个Btn元素都将被初始化为它的所有成员都是0的状态。这种初始化方式是一种简便的写法,用于确保结构体数组中的所有元素都被正确地初始化,而不需要为数组中的每个元素单独编写初始化代码。本条语句将确保key[0]key[1]key[2]key[3]这四个Btn结构体实例的press成员被初始化为false(因为在C语言中,bool类型的0通常表示false),state成员被初始化为0long_time成员也被初始化为0。Btn 使得代码更加清晰,也提高了代码的可读性和可维护性。

        当需要在多个地方使用这种结构体时,使用 typedef 定义的别名会非常方便。此外,如果之后需要修改这个结构体的定义,只需要在一个地方(即 typedef 的声明处)进行修改,而不需要在代码中搜索并替换所有使用这个结构体的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值