美文网首页iOS 的那些事儿
iOS开发 CG_INLINE、static inline内联函

iOS开发 CG_INLINE、static inline内联函

作者: LuckyBugGo | 来源:发表于2019-05-31 13:41 被阅读0次

static inlinedefine都是一种宏定义语法。define一般用来预编译常量,static inline一般用来预编译函数。

  1. 在定义函数时,define会引起语义上的歧义
#define MULTI(x) (x*x)

NSLog(@"MULTI(10):%d", MULTI(10));
NSLog(@"MULTI(10+10):%d", MULTI(10+10));

打印结果为:

MULTI(10):100
MULTI(10+10):120

很显然,在处理MULTI(10+10)时,一般理解为:(10+10)*(10+10)=400。但是define只是将x简单替换,所以实际为:10+10*10+10=120

static inline int MULTI2(int x) {
    return x*x;
};

NSLog(@"MULTI2(10):%d", MULTI2(10));
NSLog(@"MULTI2(10+10):%d", MULTI2(10+10));

打印结果为:

MULTI2(10):100
MULTI2(10+10):400

当使用static inline预编译时,不会造成语义上的歧义,而且效率更高。

参考资料

  1. iOS OC内联函数 inline
  2. 内联函数:static inline 和 extern inline 的含义

相关文章

  • iOS开发 CG_INLINE、static inline内联函

    static inline和define都是一种宏定义语法。define一般用来预编译常量,static inli...

  • 内联函数 inline

    内联函数的预编译指令 #define CG_INLINE static inline inlin...

  • 结构体

    这里CG_INLINE是一个宏:#define CG_INLINE static inline,这是系统的一...

  • OC 内联函数 inline

    在iOS的一些框架中, static inline 是经常出现的关键字组合,主要是为了提高函数调用的效率。 内联函...

  • iOS-inline内联函数

    iOS-inline内联函数

  • static inline内联函数.

    今天在自定义类中,遇到linker command failed with exit code 1 (use -v...

  • 3.构造函数

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

  • iOS开发中内联函数(UIKIT_STATIC_INLINE)的

    内联函数是一种小型函数,是以空间换效率的函数,功能较简单,即函数内部没有循环、开关语句等,内联函数的主要作用是在使...

  • inline

    static inline内联函数-好喜儿-ChinaUnix博客 floor(x),也写做Floor(x),其功...

  • static inline 内联函数剖析

    内联函数有些类似于宏。内联函数的代码会被直接嵌入在它被调用的地方,调用几次就嵌入几次,没有使用call指令。这样省...

网友评论

    本文标题:iOS开发 CG_INLINE、static inline内联函

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