iOS开发 CG_INLINE、static inline内联函
2019-05-31 本文已影响0人
LuckyBugGo
static inline
和define
都是一种宏定义语法。define
一般用来预编译常量,static inline
一般用来预编译函数。
- 在定义函数时,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
预编译时,不会造成语义上的歧义,而且效率更高。