C下的__attribute__ 关键字学习

使用__attribute__关键字,首先需要编译器支持,现在绝大多数的编译器都是支持的.

其功能主要是用来在函数或数据声明中设置其属性.

__attribute__可以设置函数属性(Function Attribute),变量属性(Variable Attribute)和类型属性(Type Attribute),格式为:

  • _attribute__ ((attribute-list))

功能有:
1. 错误检查. 函数属性可以帮助开发者把一些特性添加到函数声明中,从而可以使编译器在错误检查方面的功能更强大.
2. 返回声明. __attribute__((noreturn))就是告诉编译器这个函数不会返回给调用者,以便编译器在优化时去掉不必要的函数返回代码.
3. 字节对齐声明.如__attribute__ ((packed))就是高速编译器取消变量或者结构体成员在编译过程中的优化对齐,即按照实际占用字节数进行对齐.

指定字节对齐:

struct Test_STU{
    char a;
    int b;
    short c;
}__attribute__(aligned(4));

指定不对齐:

struct Test_STU{
    char a;
    int b;
    short c;
}__attribute__((packed));