union u{
char ch[41];
int b[10];
}un;
LLVM编译到此
%union.u = type { [10 x i32], [4 x i8] }
和这个
union un{
struct s{
int a;
float f;
double d;
}st;
int intArr[10];
}uno;
编译到此
%union.un = type { %struct.s, [24 x i8] }
%struct.s = type { i32, float, double }
任何人都可以解释联合类型的派生方式吗?
答案 0 :(得分:4)
第一个成员只是联合中最对齐的成员(如果有多个这样的成员,它会随意选择一个成员),并附加一个i8数组以使其大小合适。