有人可以解释一下,为什么我需要在这个位字段结构中使用这些未命名的无符号整数?
struct box_props{
unsigned int opaque : 1;
unsigned int fill_color : 3;
unsigned int : 4;
unsigned int show_border : 1;
unsigned int border_color: 3;
unsigned int border_style: 2;
unsigned int : 2;
};
答案 0 :(得分:3)
当您尝试匹配某些已经定义的位集时,您可以这样做,这些位在这些位置只有漏洞(未使用的位)。
这在硬件寄存器和文件格式中很常见,其中通常保留空间以供将来使用。
请注意,您永远不能依赖编译器将位分配给struct
的字节的顺序,因此使用位域的代码很少是可移植的。
答案 1 :(得分:0)
这些是出于填充的原因。如果您不希望fill_color
和show_border
共享相同的字节,那么您需要这些填充位。