打印
[单片机芯片]

__attribute__ 介绍

[复制链接]
846|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuotuzi|  楼主 | 2023-3-19 17:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
__attribute__是一个编译属性,用于向编译器描述特殊的标识、错误检查或高级优化。它是GNU C特色之一,系统中有许多地方使用到。 __attribute__可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute)等。

__attribute__ 格式
<div>__attribute__ ((attribute-list))</div><div></div>

__attribute__ 常用的编译属性及简单应用
format
这个属性指定一个函数比如printf,scanf作为参数,这使编译器能够根据代码中提供的参数检查格式字符串。对于追踪难以发现的错误非常有帮助。

format参数的使用如下:
format (archetype, string-index, first-to-check)
第一参数需要传递archetype指定是哪种风格,这里是 NSString;string-index指定传入函数的第几个参数是格式化字符串;first-to-check指定第一个可变参数所在的索引.

C中的使用方法
extern int my_printf (void *my_object, const char *my_format, ...) __attribute__((format(printf, 2, 3)));
used的作用是告诉编译器,我声明的这个符号是需要保留的。被used修饰以后,意味着即使函数没有被引用,在Release下也不会被优化。如果不加这个修饰,那么Release环境链接器会去掉没有被引用的段。
其他还有很多,大家可以去查查



使用特权

评论回复
沙发
tpgf| | 2023-4-11 16:32 | 只看该作者
__attribute__ 书写特征是:__attribute__ 前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__ 参数。

使用特权

评论回复
板凳
观海| | 2023-4-11 16:49 | 只看该作者
__attribute__ 也可以对结构体(struct )或共用体(union )进行属性设置。

使用特权

评论回复
地板
guanjiaer| | 2023-4-12 11:15 | 只看该作者
可以在同一个函数声明里使用多个__attribute__

使用特权

评论回复
5
heimaojingzhang| | 2023-4-12 11:36 | 只看该作者
__attribute__设计的非常巧妙,很容易作到和其它编译器保持兼容

使用特权

评论回复
6
keaibukelian| | 2023-4-12 11:53 | 只看该作者
__attribute__适用于函数的声明而不是函数的定义

使用特权

评论回复
7
paotangsan| | 2023-4-12 12:04 | 只看该作者
__attribute__机制也很容易同非GNU应用程序做到兼容之功效

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

3260

帖子

7

粉丝