关于C语言typedef struct类型名使用的疑问求助
关于C语言中typedef结构体别名的用法解释
先贴出你提到的代码:
typedef struct saCmdQueue_s { uint8_t *buf; int len; } saCmdQueue_t; #define SA_QSIZE 6 // 1 heartbeat (GetSettings) + 2 commands + 1 slack static saCmdQueue_t sa_queue[SA_QSIZE];
你之前的理解存在偏差,saCmdQueue_t并不是saCmdQueue_s类型的对象,而是C语言通过typedef给结构体类型定义的别名:
- 代码里的
struct saCmdQueue_s是这个结构体的完整类型名称,typedef关键字的作用就是把这个冗长的类型名简化成saCmdQueue_t,让后续代码可以用更短的名称来指代该结构体类型。 - 最后一行
static saCmdQueue_t sa_queue[SA_QSIZE];,实际等价于static struct saCmdQueue_s sa_queue[SA_QSIZE];——它定义了一个静态数组sa_queue,数组内包含SA_QSIZE个struct saCmdQueue_s类型的结构体元素。
说白了,typedef在这里就是给结构体类型“起个短名字”,用这个短名字定义变量、数组,和用原结构体类型名的效果完全一致,只是写法更简洁。
内容的提问来源于stack exchange,提问作者Jason Keiter
相关产品推荐
相关产品推荐

