C __attribute__ 作用

 

GNU C 的一大特色就是__attribute__ 机制。attribute 可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。

其位置约束为: 放于声明的尾部“;” 之前

attribute 书写特征为: attribute 前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__ 参数。

attribute 语法格式为: attribute ((attribute-list))

当__attribute__ 用于修饰对象时,它就如同C 语言语法体系结构的类型限定符,跟const , volatile , restrict 等属一类。
当__attribute__ 用于修饰函数时,它就相当于一个函数说明符,跟inline,Noreturn 属同一类。
当__attribute_ 用于修饰一个结构体,联合体或者枚举类型,该限定符只能放在类型标识符之前

 

 

#define TU_ATTR_ALIGNED(Bytes) __attribute__ ((aligned(Bytes)))        //字节对齐
#define TU_ATTR_SECTION(sec_name) __attribute__ ((section(#sec_name)))     // section存放
#define TU_ATTR_PACKED __attribute__ ((packed))                                             //单字节对齐
#define TU_ATTR_WEAK __attribute__ ((weak))                                     //如果在自己文件里声明weak,如果外界没有该同类函数,则用同文件里的函数,如果外界有进行函数实现,则调用外界的
#define TU_ATTR_ALWAYS_INLINE __attribute__ ((always_inline))      //强制内联函数,用于告知GCC编译器不做任何优化
#define TU_ATTR_DEPRECATED(mess) __attribute__ ((deprecated(mess))) // warn if function with this attribute is used                // 不建议使用,如果会被调用到,编译会出现该告警
#define TU_ATTR_UNUSED __attribute__ ((unused)) // Function/Variable is meant to be possibly unused                                      //加上了函数实现,如果函数没有被调用,不会出现警告
#define TU_ATTR_USED __attribute__ ((used))                                                             //函数必须被使用

 

 

 

参考链接:https://www.cnblogs.com/tureno/articles/12236495.html

posted @ 2022-06-08 09:12  cogitoergosum  阅读(205)  评论(0)    收藏  举报