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

来源:互联网 发布:民航航线图数据下载 编辑:程序博客网 时间:2024/06/06 02:46

做"代码调整优化"项目时,打算把一些函数放到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中声明内联函数,有效果,(即可以被展开

原创粉丝点击