C语言

static inline内联函数.

2016-05-13  本文已影响1381人  心情的颜色

今天在自定义类中,遇到linker command failed with exit code 1 (use -v to see invocation)这个问题在百度查了一下说是 第三方引入或者Other Linker Flags链接命令失败的退出代码问题,可是我的自定义类昨天还没事,今天就只是在里面添加了两个C函数就报这个错了,点进去看发现下面也有自定义函数可是没问题啊, 不过人家前边多两个修饰词static inline想了半天表示小渣渣没见过这样修饰所以只能去问百度大神.

结果:

  1. 这玩意叫:
    内联函数
  1. 定义:
    有函数的结构,但不具备函数的性质,类似于宏替换。代码中使用inline定义,能否形成内联函数,还要看编译器对内联函数体内部的定义的具体处理。
  2. 产生动机:
    由于函数之间的调用,会从一个内存地址调到另外一个内存地址,当函数调用完毕之后还会返回原来函数执行的地址。函数调用会有一定的时间开销,引入内联函数就是为了解决这一问题。。解决函数调用效率的问题.
    4.注意事项:
    不能使用循环语句;不能使用开关语句;不能使用递归调用;定义在第一次调用之前;

补充 :
我们知道一般的函数调用都会通过call的方式来调用,这样让攻击很容易对一个函数做手脚,如果是以inline的方式编译的会,会把该函数的code拷贝到每次调用该函数的地方。而static会让生成的二进制文件中没有清晰的符号表,让逆向的人很难弄清楚逻辑。

相关连接: http://blog.csdn.net/chsadin/article/details/47982923
相关连接: http://www.blogfshare.com/ioss-static-inline.html

上一篇下一篇

猜你喜欢

热点阅读