gpt4 book ai didi

c - 将整数值分配给结构

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:44 25 4
gpt4 key购买 nike

我有一个结构定义为:

typedef struct {
uint8_t field1 : 6,
uint8_t field2 : 1,
uint8_t field3 : 1
} myStruct;

然后:

myStruct s;

一次为所有字段分配一个 8 位值的安全方法是什么,即:

s = 10;

编译器在尝试像这样分配时会出错(显然,我什至没有暗示这是这样做的方式:))。

是否推荐:

uint8_t a = 10;
s = * ((myStruct*) &a);

?

最佳答案

你可以使用 union :

union myUnion {
struct myStruct ms;
uint8_t byte;
};

myUnion u;
u.byte = 10; /* Uses the same memory as myStruct and its fields. */
printf("field1=%u field2=%u field3=%u\n", u.ms.field1, u.ms.field2, u.ms.field3);

这曾经是不受欢迎的,但请参阅 @mafso下面的评论,它seems to be allowed现在。

关于c - 将整数值分配给结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25383396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com