__attribute__ ((packed))
: 的作用就是告诉编译器取消结构体在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关
在GCC下:
struct my
{
char ch;
int a;
} // 非紧凑模式
// sizeof(int)为4
// sizeof(my)为8
struct my
{
char ch;
int a;
} attrubte ((packed)) // 紧凑模式
// sizeof(int)为4
// sizeof(my)为5