gpt4 book ai didi

c - 在 C 中使用 union 是否有效/合规?

转载 作者:太空狗 更新时间:2023-10-29 17:03:28 24 4
gpt4 key购买 nike

鉴于这些结构:

typedef struct {
//[...]
} StructA;

typedef struct {
StructA a;
//[...]
} StructB;

typedef union {
StructA a;
StructB b;
} Union;

下面的两种访问方式是否等价且不是undefined?

Union u;
memcpy(&u.b, /*...*/); //Pretend I populated StructB here
u.a; // Method 1
u.b.a; // Method 2

请注意,StructA 恰好是 StructB 的第一个成员。

我在一个有效的代码库中发现了这个,我只是想知道它是否是标准的,或者是否存在任何对齐问题。

最佳答案

typedef union {
StructA a;
StructB b;
} Union;

a 与 union 中的 b 具有相同的偏移量:0

aStructB 中的偏移量为 0。

调用是等价的。

关于c - 在 C 中使用 union 是否有效/合规?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42177858/

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