类型 |
对齐边界 |
字节对齐 |
---|---|---|
char 和 _Bool |
字节 |
1 |
short |
半字 |
2 |
int |
字 |
4 |
long -m32 |
字 |
4 |
long -m64 |
双字 |
8 |
long long -m32 |
双字 (SPARC) 字 (x86) |
8 (SPARC) 4 (x86) |
long long -m64 |
双字 |
8 |
float |
字 |
4 |
double -m32 |
双字 (SPARC) 字 (x86) |
8 (SPARC) 4 (x86) |
double -m64 |
双字 |
8 |
long double -m32 |
双字 (SPARC) 字 (x86) |
8 (SPARC) 4 (x86) |
long double -m64 |
四倍长字 |
16 |
pointer -m32 |
字 |
4 |
pointer -m64 |
四倍长字 |
8 |
float _Complex |
字 |
4 |
double _Complex -m32 |
双字 (SPARC) 字 (x86) |
8 (SPARC) 4 (x86) |
double _Complex -m64 |
双字 |
8 |
long double _Complex -m32 |
双字 (SPARC) 字 (x86) |
8 (SPARC) 4 (x86) |
long double _Complex -m64 |
四倍长字 |
16 |
float _Imaginary |
字 |
4 |
double _Imaginary -m32 |
双字 (SPARC) 字 (x86) |
8 (SPARC) 4 (x86) |
double _Imaginary -m64 |
双字 |
8 |
long double _Imaginary -m32 |
双字 (SPARC) 字 (x86) |
8 (SPARC) 4 (x86) |
long double _Imaginary -m64 |
双字 |
16 |
内部填充结构成员,以便各个元素在适当的边界上对齐。
结构的对齐与其更严格对齐的成员相同。例如,只包含 char 数据的 struct 无对齐限制,而包含用 -m64 编译的 double 数据的 struct 将按 8 字节边界对齐。