c ++结构中的位字段声明

Tam*_*ran 4 c++ struct bit-fields

我正在阅读c ++的ISO标准,我来到了这个位字段声明.以下代码对我来说不太清楚

struct {
 char a;
 int b:5,
 c:11,
 :0,
 d:8;
 struct {int ee:8;}
 e;
 } 
Run Code Online (Sandbox Code Playgroud)

这里指定字段a,d和e.ee具有不同的存储器位置,并且可以使用多个线程独立地修改它们.位域b和c使用相同的存储器位置,因此它们不能同时修改.我不明白为c使用两个位字段的意义c:11,:0,.谁能清楚我对此的看法?谢谢

R S*_*ahu 5

您询问;

我不明白使用两个位字段的重要性,即c:11,:0,.谁能清楚我对此的看法?

c未使用两个位字段定义.第二个是未命名的位字段.宽度为零的未命名位域具有特殊意义.这就是标准所说的关于未命名的位域的内容.

省略标识符的位字段声明声明了未命名的位字段.未命名的位字段不是成员,无法初始化.[注意:未命名的位字段对于填充符合外部强加的布局非常有用. - 结束注释]作为特殊情况,宽度为零的未命名位域指定分配单元边界处的下一个位字段的对齐.只有在声明未命名的位字段时,constant-expression的值才能等于零.