美文网首页
内联函数 inline

内联函数 inline

作者: 淇滨杜隆坦 | 来源:发表于2016-07-07 09:56 被阅读205次

内联函数的预编译指令

  • #define CG_INLINE static inline
  • inline
  • 在inline加上static修饰符,只是为了表明该函数只在该文件中可见!也就是说,在同一个工程中,就算在其他文件中也出现同名、同参数的函数也不会引起函数重复定义的错误!
  • CoreGraphics里的内联函数,在函数前声明后编译器执行起来更具效率,使宏的定义更节省,不涉及栈的操作。(这句话出自这里CG_INLINE note)
  • CG_INLINE:
    It is a #define for static inline. This causes the compiler to create the code for the function inline, rather that creating a function call on the stack. See here and here for more information.
    <br />

为什么引入内联函数

  • 引入内联函数是为了解决函数调用效率的问题
  • 由于函数之间的调用,会从一个内存地址调到另外一个内存地址,当函数调用完毕之后还会返回原来函数执行的地址。函数调用会有一定的时间开销,引入内联函数就是为了解决这一问题
    <br />

如何提升函数调用效率

汇编中可以发现:使用内联与否,直接影响汇编代码中是否出现 call 指令:
call指令就是就需要:
(1)将下一条指令的所在地址(即当时程序计数器PC的内容)入栈
(2)并将子程序的起始地址送入PC(于是CPU的下一条指令就会转去执行子程序)
参看ios内联函数 inline

ios 开发中使用内联函数

  • 定义:
    有函数的结构,但不具备函数的性质,类似于宏替换。代码中使用inline定义,能否形成内联函数,还要看编译器对内联函数体内部的定义的具体处理。

  • 产生的动机:
    消除函数调用产生的开销,适合与小内存函数,频繁执行的函数。

  • 注意事项:
    不能使用循环语句;不能使用开关语句;不能使用递归调用;定义在第一次调用之前;

  • 结合使用的问题:
    static inline fun_returnType Fun_name(param...){}
    static 标识此内联联函数只能在本文件中使用,限制了内联函数的作用域。相对于宏来说,static inline具有和宏同样级别的开销,而且还提供了类型安全,没有长度和格式的具体限制。

相关文章

  • Kotlin内联函数使用

    inline 本质 Kotlin中的内联函数使用inline关键字修饰,形如: 编译时,inline会将内联函数中...

  • C++ 从入门到放弃 (Day-02)

    内联函数(inline function) ◼ 使用inline修饰函数的声明或者实现,可以使其变成内联函数 建...

  • 内联函数

    内联函数 整理自内联函数百度百科 内联函数是指用inline修饰的函数(并不是所有用inline修饰的函数都是内联...

  • 04-内联函数(inline function)

    内联函数(inline function) 使用inline修饰函数的声明或者实现,可以使其变成内联函数。一般建议...

  • 内联函数、引用、const

    内联函数 inline function 使用inline修饰函数的声明或者实现,可以使其变成内联函数。 一般建议...

  • iOS-inline内联函数

    iOS-inline内联函数

  • Kotlin - Inline Functions 1

    Inline Basics Inline or Inlining,我们更经常听到的词是方法内联或者内联函数。在大多...

  • Kotlin之lambda、inline、扩展函数与匿名函数

    > inline 内联函数及其场景 inline只能提高带有lambda参数的函数的性能 ==好处==: 节约函数...

  • 3.构造函数

    inline(内联)函数 inline函数是直接替换函数名为函数内容.声明inline的两种方式: 函数定义时在函...

  • Kotlin内联函数

    Kotlin里使用关键 inline 来表示内联函数,那么到底什么是内联函数呢,内联函数有什么好处呢? 1. 什么...

网友评论

      本文标题:内联函数 inline

      本文链接:https://www.haomeiwen.com/subject/pofljttx.html