在C语言中,typedef struct 与直接 struct 的区别在于定义结构体类型的方式以及后续使用方式的便利性。
typedef struct的定义方式:
typedef struct {
uint32_t Pin;
uint32_t Mode;
uint32_t Pull;
uint32_t Speed;
} GPIO_InitTypeDef;
这种方式定义了一个匿名的结构体,并将其定义为 GPIO_InitTypeDef 这个类型的别名。使用 typedef 关键字可以在定义结构体的同时定义了一个结构体类型的别名,这样在后续使用时就可以直接使用 GPIO_InitTypeDef 这个别名来声明结构体变量,而不需要再写一遍 struct。
示例使用方式:
GPIO_InitTypeDef gpio_init;
gpio_init.Pin = GPIO_PIN_0;
gpio_init.Mode = GPIO_MODE_INPUT;
gpio_init.Pull = GPIO_PULLUP;
gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
- 直接
struct的定义方式:
struct GPIO_InitTypeDef {
uint32_t Pin;
uint32_t Mode;
uint32_t Pull;
uint32_t Speed;
};
这种方式直接定义了一个结构体类型为 struct GPIO_InitTypeDef,没有定义别名。在后续使用时需要使用 struct 关键字来声明结构体变量。
示例使用方式:
struct GPIO_InitTypeDef gpio_init;
gpio_init.Pin = GPIO_PIN_0;
gpio_init.Mode = GPIO_MODE_INPUT;
gpio_init.Pull = GPIO_PULLUP;
gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
总的来说,typedef struct 方式定义结构体类型时会创建一个类型别名,可以简化声明结构体变量的方式;而直接 struct 定义方式不会创建类型别名,声明结构体变量时需要使用 struct 关键字。选择哪种方式取决于个人或项目的编程习惯和需求。
本文讲述了C语言中typedefstruct与直接struct的定义方式,强调typedefstruct通过创建类型别名简化了结构体变量的声明,而直接struct则不提供别名。选择哪种方式取决于开发者的习惯和项目需求。

3639

被折叠的 条评论
为什么被折叠?



