linux 下 利用反汇编 查看 inline函数的 使用

做"代码调整优化"项目时,打算把一些函数放到ops,但师兄突然说 内联函数 放到ops会失去内联的效果(即:编译时不会被展开),自己专门看了下相关的资料。

收获如下:

a.c作为一个测试文件,内部使用了内联函数


详细步骤如下:


一:

gcc -O -o main a.c  

其中的-O表示编译优化,如果不加,则编译时不会进行内联。


二:

objdump -D main > dump.txt

-D 表示反汇编 


三:

利用grep 函数名 dump.txt 查看 该函数是否展开。 若没有查到,则说明 内联函数 被展开; 反之 则没有展开。


结论:

1 内联函数中有循环时, 还有效果,即: 编译时可以展开; 但是内部有递归或者内部有malloc时,就不能被展开

2 在动态ops中声明内联函数,也没有效果,(即不能被展开)

2 在静态ops中声明内联函数,有效果,(即可以被展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值