我有一个结构定义为:
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/