gpt4 book ai didi

C++ union/结构位域实现和可移植性

转载 作者:行者123 更新时间:2023-11-30 01:03:32 24 4
gpt4 key购买 nike

我有一个包含 uint16 和结构的 union :

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

我的同事说这个便携性有问题,但我不确定我是否购买了这个。有人能解释一下(尽可能简单)这里的“错误”是什么吗?

最佳答案

来自 C++17 12.2.4 Bit-fields/1(和 C++11 9.6 Bit-fields/1,如果你想要回答特定您选择的标签):

Allocation of bit-fields within a class object is implementation-defined. Alignment of bit-fields is implementation-defined. Bit-fields are packed into some addressable allocation unit. [Note: Bit-fields straddle allocation units on some machines and not on others. Bit-fields are assigned right-to-left on some machines, left-to-right on others. - end note]

依赖于实现定义的行为,就其本质而言,意味着不可移植的代码。

关于C++ union/结构位域实现和可移植性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53074726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com