Oracle Solaris Studio 12.2:C 用户指南

E.1.9.2 (6.5.2.1) The padding and alignment of members of structures(结构成员的填充和对齐)。

表 E–5 结构成员的填充和对齐

类型  

对齐边界  

字节对齐  

char_Bool

字节 

short

半字 

int

字 

long -m32

字 

long -m64

双字 

long long -m32

双字 (SPARC)  

字 (x86) 

8 (SPARC)  

4 (x86) 

long long -m64

双字 

float

字 

double -m32

双字 (SPARC)  

字 (x86) 

8 (SPARC)  

4 (x86) 

double -m64

双字 

long double -m32

双字 (SPARC)  

字 (x86) 

8 (SPARC)  

4 (x86) 

long double -m64

四倍长字 

16 

pointer -m32

字 

pointer -m64

四倍长字 

float _Complex

字 

double _Complex -m32

双字 (SPARC)  

字 (x86) 

8 (SPARC)  

4 (x86) 

double _Complex -m64

双字 

long double _Complex -m32

双字 (SPARC)  

字 (x86) 

8 (SPARC)  

4 (x86) 

long double _Complex -m64

四倍长字 

16 

float _Imaginary

字 

double _Imaginary -m32

双字 (SPARC)  

字 (x86) 

8 (SPARC)  

4 (x86) 

double _Imaginary -m64

双字 

long double _Imaginary -m32

双字 (SPARC)  

字 (x86) 

8 (SPARC)  

4 (x86) 

long double _Imaginary -m64

双字 

16 

内部填充结构成员,以便各个元素在适当的边界上对齐。

结构的对齐与其更严格对齐的成员相同。例如,只包含 char 数据的 struct 无对齐限制,而包含用 -m64 编译的 double 数据的 struct 将按 8 字节边界对齐。