GCC-__attribute__()(一)属性机制

__attribute__(())是GCC对C语言的扩展,用于设置函数、变量和类型的属性,如优化代码、保证编码正确性。常见用法包括位置指定、属性组合等,通常在特定优化场景下使用。通过关键宏判断属性支持,并在声明后使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介


__attribute__((option))是编译器对C语言的扩展,可以设置特定的函数、变量和类型的相关属性。

使用场景


主要用于优化代码,保证编码正确,优化程序逻辑,优化存储格式等,正常简单的项目都没必要使用。

属性列表(常用)


属性名称 作用域
(F:函数, V: 变量,T: 类型)
含义 备注
constructor F 使被修饰的函数在main函数前被执行  
destructor F 使被修饰的函数在main函数结束后被执行  
format F 告诉编译器,按照printf, scanf, strftime或strfmon的参数表格式规则对该函数的参数进行检查  
noreturn F 表示这个函数没有返回值也不能有返回值
const F 表示一个方法的返回值只由参数决定,如果参数不变的话,就不再调用此函数,直接返回值  
weak F 弱函数,如果同名函数在其他地方被定义将使用其他地方的函数,当其他地方没有定义才使用该函数  
warn_unused_result F 表明函数返回值必须被接收或使用,否则将编译报错 建议修饰所有返回动态内存地址和如果执行错误将导致后续流程执行并返回错误码的函数
cleanup() V 用于修饰变量,在变量作用域结束后调用指定函数  
always_inline F 保证代码是内联的,强制内联 不一定有效,具体还是得看编译器
section("name") FV 在编译时将被修饰的函数或数据放入指定名为"name"对应的段中 需要修改链接脚本才能生效
aligned(n) VT 格式化对齐,强制编译器为结构体分配空间时采用规定位对齐,不指定数字时,编译器自动选择对目标机器最优方式  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值