【发布时间】:2017-02-11 15:50:18
【问题描述】:
鉴于这些结构:
typedef struct {
//[...]
} StructA;
typedef struct {
StructA a;
//[...]
} StructB;
typedef union {
StructA a;
StructB b;
} Union;
下面的两种访问方法是等价的且不是未定义的吗?
Union u;
memcpy(&u.b, /*...*/); //Pretend I populated StructB here
u.a; // Method 1
u.b.a; // Method 2
请注意,StructA 恰好是 StructB 的第一个成员。
我在一个有效的代码库中发现了这一点,我只是想知道它是否是标准的,或者是否有任何对齐问题。
【问题讨论】: