attribute属性
__attribute__介绍
attribute的格式.
__attribute__((attribute-list))
attribute属性可以在编译的时候告诉编译器函数, 结构体的属性是什么, 进行某些编译优化, 也可以提供更加准确的错误检查.
attribute是GNU特有的特性
这里主要说明attribute的4个属性, 分别是packed, aligned, constructor, destructor.
packed属性
设置结构体和类的对齐方式, 它使得变量和结构体,类按最小对齐方式来对齐变量.
我们直接写
struct Temp
{char j;int i;
}temp;
struct Attribute_t
{char i;int j;
}__attribute__((packed))attribute_t;
可以看出来, attribute是最小对齐, 中间没有任何空的内存, 而没有使用的结构体是严格按照规定的对齐方式来对齐数据的. 这种对齐在内核代码里面最常见, 很多的结构体希望