__attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器和vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:
在TC下:struct A{ char ch; int a;} ;sizeof(int)=2;sizeof(A)=3;(紧凑模式)
在GCC下:struct A{ char ch; int a;}; sizeof(int)=4;sizeof(A)=8;(非紧凑模式)
在GCC下:struct A{ char ch; int a;}__attrubte__ ((packed)); sizeof(int)=4;sizeof(A)=5
__attribute__((packed))是GCC特有的语法,用于取消结构体编译过程中的优化对齐,实现按实际占用字节数对齐。此特性与操作系统无关,取决于编译器。在不同编译器下,同一结构体的大小可能不同。

1408

被折叠的 条评论
为什么被折叠?



