xBA*_*ACP 2 c++ struct unions c++11
我有一个包含 uint16 和一个结构的联合,如下所示:
union pData {
uint16_t w1;
struct {
uint8_t d1 : 8;
uint8_t d2 : 4;
bool b1 : 1;
bool b2 : 1;
bool b3 : 1;
bool b4 : 1;
} bits;
};
Run Code Online (Sandbox Code Playgroud)
我的同事说这个便携有问题,但我不确定我买这个。可以请一些人解释(尽可能简单)这里的“错误”是什么?
来自C++17 12.2.4 Bit-fields /1(并且C++11 9.6 Bit-fields /1就此而言,如果您想要特定于您选择的标签的答案):
类对象中位域的分配是实现定义的。位域的对齐是实现定义的。位域被打包到一些可寻址的分配单元中。[注意:位域跨越一些机器上的分配单元而不是其他机器。位域在某些机器上从右到左分配,在其他机器上从左到右分配。- 尾注]
依赖于实现定义的行为就其本质而言意味着不可移植的代码。
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |