位字段结构中未命名的int

时间:2014-06-10 14:27:14

标签: c

有人可以解释一下,为什么我需要在这个位字段结构中使用这些未命名的无符号整数?

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;
}; 

2 个答案:

答案 0 :(得分:3)

当您尝试匹配某些已经定义的位集时,您可以这样做,这些位在这些位置只有漏洞(未使用的位)。

这在硬件寄存器和文件格式中很常见,其中通常保留空间以供将来使用。

请注意,您永远不能依赖编译器将位分配给struct的字节的顺序,因此使用位域的代码很少是可移植的。

答案 1 :(得分:0)

这些是出于填充的原因。如果您不希望fill_colorshow_border共享相同的字节,那么您需要这些填充位。