会被自动inline的条件

想用GDB去断一个类里的函数,发现不行,被编译器自动转成了inline了,

查了一些资料得知了会被自动变成inline函数的条件

  • 有可能会被inline的情况
    1. 在函数定义的时候,加上inline关键字
    2. 函数较短,没有循环或递归,用-O2或-O3编译
    3. 类成员函数,在类定义的时候,直接写了函数体,而且函数体较短
  • 肯定不会被inline的情况(只要满足任一条件,不管上足上面多少个条件,都不会inline)
    1. 直接或间接递归调用到了本身
    2. 函数内有循环
    3. 函数较长(具体多长我暂时不清楚,好像是和一个-finline-limit参数有关)
    4. 函数体的定义在当前函数的后面(也就是先声明,后使用,最后定义的函数)
    5. 用gcc编译时,没有加上任何-O参数
    6. 用了-no-inlie参数

 

想断的函数属于3,而且就是一个简单的return类变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值