确定位域C的顺序

时间:2017-08-16 13:03:14

标签: c bit-fields

如何确定位域的顺序?我可以通过执行x.c来更改位域的元素,其中x是结构类型的变量。我试图对其进行位掩码并将其打印出来,但我只能打印结构中的每个元素而不是整个变量。我试图分配一个指向位域元素的指针,但它会出现错误。确定C编译器的位域顺序的最佳方法是什么?例如,这个结构将哪个顺序表示为?

struct bit_fields
{
unsigned int a : 6,
             b : 8,
             c : 18;
}

1 个答案:

答案 0 :(得分:0)

根据C11,章节§6.7.2.1/ P11

  

[....]单位内位域分配的顺序(高位到   实现定义的是低阶或低阶到高阶。对齐   可寻址存储单元未指定。

最好的方法是检查您的平台上的编译器文档和ABI。