static inline内联函数.

今天在自定义类中,遇到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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引入内联函数的目的是为了解决程序中函数调用的效率问题。 函数是一种更高级的抽象。它的引入使得编程者只关心函数的功能...
    平谦阅读 2,248评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,180评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,138评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,806评论 18 399
  • 团体就如火焰,吸引着无数的飞蛾扑去,用生命升起光芒吸引,在那绚丽的火焰中唯有少数生命能翩翩起舞。 --火舞蛾 以上...
    怨锦阅读 235评论 0 0