static inline内联函数.
2016-05-13 本文已影响1381人
心情的颜色
今天在自定义类中,遇到linker command failed with exit code 1 (use -v to see invocation)
这个问题在百度查了一下说是 第三方引入或者Other Linker Flags
链接命令失败的退出代码问题,可是我的自定义类昨天还没事,今天就只是在里面添加了两个C
函数就报这个错了,点进去看发现下面也有自定义函数可是没问题啊, 不过人家前边多两个修饰词static inline
想了半天表示小渣渣没见过这样修饰所以只能去问百度大神.
结果:
- 这玩意叫:
内联函数
- 定义:
有函数的结构,但不具备函数的性质,类似于宏替换。代码中使用inline定义,能否形成内联函数,还要看编译器对内联函数体内部的定义的具体处理。 - 产生动机:
由于函数之间的调用,会从一个内存地址调到另外一个内存地址,当函数调用完毕之后还会返回原来函数执行的地址。函数调用会有一定的时间开销,引入内联函数就是为了解决这一问题。。解决函数调用效率的问题.
4.注意事项:
不能使用循环语句;不能使用开关语句;不能使用递归调用;定义在第一次调用之前;
补充 :
我们知道一般的函数调用都会通过call的方式来调用,这样让攻击很容易对一个函数做手脚,如果是以inline的方式编译的会,会把该函数的code拷贝到每次调用该函数的地方。而static会让生成的二进制文件中没有清晰的符号表,让逆向的人很难弄清楚逻辑。
相关连接: http://blog.csdn.net/chsadin/article/details/47982923
相关连接: http://www.blogfshare.com/ioss-static-inline.html