四种改变编译器默认对齐方式的方法:
(1)使用伪指令#pragma pack (n),C编译器将按照n个字节对齐。
(2) 使用伪指令#pragma pack (),取消自定义字节对齐方式。
(3)__attribute((aligned (n))),让所作用的结构成员对齐在n字节自然边界上。如果结构中有成员的长度大于n,则按照最大成员的长度来对齐。
(4)__attribute__ ((packed)),取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。
相关知识点
__attribute__机制
attribute可以设置描述三种类型:
(1)函数属性(Function Attribute)
(2)变量属性(Variable Attribute)
(3)类型属性(Type Attribute)。
特征
__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数,它必须放于声明的尾部“;”之前。
语法格式
__attribute__ ((attribute-list))