c++ - C union 什么时候执行

标签 c++ c compiler-construction unions

如果 C 中的 union 用于例如将变量打包到字节数组中,如下所述:

typedef union 
{ 
uint16_t integer; 
byte binary[4]; 
} binaryInteger;

什么时候执行实际 union ?是当变量被分配给 union 的任何部分时。或者是在访问该部分时?

是否可以在不导致 union 执行的情况下以任何方式访问当前或以前的分配(取决于执行时间)?

最佳答案

在 C 和 C++ 中, union 是被动的,所以从技术上讲,它们永远不会被“执行”。它们告诉编译器您想如何为 union 控制的类型进行内存布局。

编译器在编译时计算union 的大小(这是其最大成员的大小)。然后将数据放置在内存中,就像您对 union 的成员进行赋值一样。

关于c++ - C union 什么时候执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25223734/

相关文章:

C++ 编译器 'shallow' 拷贝和赋值

c++ - 尝试 'Make' CUDA SDK,ld 找不到库,ldconfig 说可以

c - 带有隐式空字符的 sizeof() 和 strlen()

c - C以字符数组和打印形式存储矩阵

c++ - 为什么 -INT_MIN = INT_MIN 在有符号的二进制补码表示中?

C++方法应该接受指向指针的指针,接收地址并且仍然有效

c - MiniFMOD编译

c++ - 弱属性的函数不能被覆盖

c++ - 错误 : ‘calcOpticalFlowPyrLK’ is not a member of ‘cv’ - OpenCV 2. 4.2

c++ - 显示 C :\Windows\System32\config using C++ 的内容