gcc编译器__attribute__ ((packed)) 的作用

gcc编译器__attribute__ ((packed)) 的作用
对于如下的结构体声明:
struct  Foo
{
    
char  c;
    
float  f;
} __attribute__((packed));

__attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。经过上述属性设置之后,Foo结构体的大小为5个字节,如果不设置该属性并且没有显式指定字节对齐属性的话,可能为8个字节。关于字节对齐,这里不多赘述。

其中__attribute__机制是gcc编译器特有的。用来在函数或数据声明中设置其属性,__attribute__可以设置函数属性、变量属性、类型属性。

关于gcc的__attribute__的更多技术细节,可以参看如下链接:
1. http://unixwiz.net/techtips/gnu-c-attributes.html
2. http://www.yuanma.org/data/2006/0625/article_948.htm


你可能感兴趣的:(gcc编译器__attribute__ ((packed)) 的作用)