#pragma pack(n) 作用:C编译器将按照n个字节对齐。
#pragma pack() 作用:取消自定义字节对齐方式。
#pragma pack(push,1) 作用:是指把原来对齐方式设置压栈,并设新的对齐方式设置为1个字节对齐
#pragmapack(pop) 作用:恢复对齐状态
#pragma pack(push) 作用:保存当前对齐状态
#pragma pack(4) 作用:设定为4字节对齐
相当于#pragma pack (push,4)
因此加入push和pop可以使对齐恢复到原来状态,而不是编译器默认,可以说后者更优,但是很多时候两者差别不大
__attribute__ ((aligned (n))) 作用:让所作用的结构成员对齐在n字节自然边界上。如果结构中有成员的长度大于n,则按照最大成员的长度来对齐。
__attribute__((packed)) 作用:取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。