保留的内存位置我有一个结构:如何编写为结构
struct foo{
uint8_t i1 : 4;
uint8_t i2 : 4;
uint8_t i3 : 4;
uint8_t i4 : 4;
}
现在,我有一个16位整数(叫它),我想写的内存位置,对于这个结构,而不必这样做:
foo1.i1 = (uint8_t)a>>12;
foo1.i2 = (uint8_t)a>>8;
foo1.i3 = (uint8_t)a>>4;
foo1.i4 = (uint8_t)a;
是否有一个选项可以将16位写入foo1的内存位置。喜欢的东西:
*(*uint16_t)&foo1 = a;
第一个问题:你为什么要使用位域? –
体面的编译器意识到你在做什么 - 这可能是过早的优化。当然,如果编译器反转布局(字节中的位顺序未指定),那么您的投射就是错误的。 – MSalters
@Neil使用位域有什么问题? –