解读下gcc中的attribute的使用

这里是一个宏定义 #define SECTION(level) attribute((used,section(".fn_cmd."level))),它使用了__attribute__((used,section)) 编译器扩展,下面是该宏的详细介绍:

该宏定义了一个叫做 SECTION 的宏,它带有一个参数 level,这个参数代表了函数命令的级别。一般而言,函数命令是用来执行特定的功能,它们被存放在一起,存储在一个特定的程序段中。这个宏的作用就是将函数命令存储在一个指定的程序段中,以便于后期程序的调试和维护。

attribute 是GCC编译器中提供的一个用于操作编译器属性的扩展。在这里,我们用到__attribute__((used,section)) ,其中 used 即表示告诉编译器,该函数必须被保留,即使它在程序的其他部分没有被调用,使得编译器不会把改函数在链接时给优化掉;section表示将函数命令存储在特定的程序段中,代码中.fn_cmd.和level用来指定这个程序段的名称和段级别。

综合来看,该宏定义需要传入一个参数level,该参数表示函数命令的级别。该宏通过使用__attribute__((used,section)) 编译器扩展,将函数命令存储在一个特定的程序段中,以便于后期程序的调试、维护和优化。示例代码如下:

SECTION("0x01")
void func1(){
    // do something
}

SECTION("0x02")
void func2(){
    // do something
}

int main(){
    func1();
    func2();

    return 0;
}

此处我们以 SECTION(“0x01”) 为例,表示将函数 func1 存储在以 .fn_cmd.0x01 命名的程序段中。其他级别的函数按照相似的方式进行存储。这样可以使得函数命令可以更清晰地被划分和调用,可以方便地进行程序优化和调试。

【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值