字节对齐

#pragma pack(n) : 以n字节对齐

#pragma pack() : 恢复默认对齐方式  

IBM:

IBM可以通过-qalign编译选项指定对齐方式 ,但是#pragma pack覆盖掉它

#pragma pack(pop) 等同于 $pragma pack()。每次#pragma pack的设置会进栈,pop就相关于把最近一次的出栈

xlc有一套 #pragma options align 也可以指定对齐方式,如

#pragma options align=packed :相关于#pragma pack(1)

#pragma options align=reset:恢复到前一个#pragma options设置(对于$pragma pack无效)

#pragma options align=natual :设置为自然对齐方式

下面是公司代码的一个例子,我自己没有验证它的正确性:

#ifdef OS_HP
#pragma pack 1
#elif defined OS_IBM
#pragma options align=packed
#elif defined _WIN32
#pragma pack(push, 1)
#else
#pragma pack(1)
#endif

原文地址:https://www.cnblogs.com/hbt19860104/p/2661545.html