如何在C中的联合中获得结构的大小?
给出以下定义:
typedef union
{
struct req_
{
uint8_t cmd1;
uint8_t cmd2;
} req;
struct rsp_
{
uint8_t cmd_result;
uint8_t status_1;
uint8_t status_2;
uint8_t status_3;
uint8_t status_4;
} rsp;
} msg_t;
sizeof(msg_t)
将提供联合的最大大小,在这种情况下,rsp_
大于req_
时将为5。
你如何得到sizeof(req_)
?
答案 0 :(得分:4)
像这样:
sizeof(struct req_);
例如:
int main()
{
printf("sizeof msg_t=%zd\n",sizeof(msg_t));
printf("sizeof struct req_=%zd\n",sizeof(struct req_));
}
输出:
sizeof msg_t=5
sizeof struct req_=2
答案 1 :(得分:0)
req_
是结构标记。您需要将struct
加上
size_t size = sizeof(struct req_);
或使用声明的结构变量
size_t size = sizeof(msg_t.req_.req);