如何确定位域的顺序?我可以通过执行x.c来更改位域的元素,其中x是结构类型的变量。我试图对其进行位掩码并将其打印出来,但我只能打印结构中的每个元素而不是整个变量。我试图分配一个指向位域元素的指针,但它会出现错误。确定C编译器的位域顺序的最佳方法是什么?例如,这个结构将哪个顺序表示为?
struct bit_fields
{
unsigned int a : 6,
b : 8,
c : 18;
}
答案 0 :(得分:0)
根据C11
,章节§6.7.2.1/ P11
[....]单位内位域分配的顺序(高位到 实现定义的是低阶或低阶到高阶。对齐 可寻址存储单元未指定。
最好的方法是检查您的平台上的编译器文档和ABI。