如果 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/