提问人:Manuel Tonella 提问时间:11/10/2023 最后编辑:Manuel Tonella 更新时间:11/10/2023 访问量:103
C++ 14 - 联合 - 访问非活动成员是否合法?
C++ 14 - union - Is it legal to access inactive member?
问:
在阅读了很多关于它的信息后,我对从 C++14 开始访问工会的不活跃成员是否合法感到困惑。我知道这是 C++11 之前的未定义行为。
一些参考资料:
C++14 引入了以下语句:
“所有非静态数据成员将具有相同的地址”
(参考:https://en.cppreference.com/w/cpp/language/union)
使用这样的工会是可以接受的吗?
typedef union _BYTE_VAL_T
{
unsigned char Val;
struct
{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
} bits;
} BYTE_BITS_T;
int main()
{
BYTE_BITS_T reg;
reg.bits.b5 = 0x1;
std::cout << reg.Val; // use of inactive member
}
答: 暂无答案
评论