美文网首页
static inline 延伸

static inline 延伸

作者: 哦小小树 | 来源:发表于2020-04-21 16:35 被阅读0次

此内容分为两个知识点:

0x01 static

字面意思为静态,一直在那里

修饰变量

main函数之前初始化,并且占用一块常量区的内存空间。
这块存储空间在程序运行过程中都不会被释放。一直在那里

用途:
当我们需要保存一个变量,这个变量一直存在,并且在程序运行过程中始终存在

修饰函数
  • 修饰的函数不能被外部文件引用
// A.h文件
// 文件声明
static void testStaticAction();  # 即便声明了静态函数,外部也无法调用
// 普通函数声明
void testActionWithoutStatic();
// A.m
// 静态函数
static void testStaticAction(){
    NSLog(@"这是一个测试文件");
}
//普通函数实现
void testActionWithoutStatic() {
    NSLog(@"没有static的函数");
}

// B.m中调用
// 报错,提示_ testStaticAction 找不到;只能A文件内部自己调用
testStaticAction();    

// 正常
testActionWithoutStatic();
  • 其他文件中可以定义相同名字的函数不会冲突
// B.m
static void testStaticAction() {
    NSLog(@"%s",__func__);
}

// B.m 调用
// 打印的上面函数定义,而不是A.m中定义的函数
testStaticAction();  

0x02 inline

inline修饰的函数为内联函数;目的是为了解决程序中函数调用效率的问题。

调用效率问题出在哪?

调用函数实际上是将程序执行顺序转移到函数所存在的内存中的某个地址。将函数的内容执行完毕后,再返回到转去执行该函数前的地方。

这种转移操作要求在转去前保护现场并标记已执行的地址,转回后先要恢复现场,并按原来保存的地址继续执行。因此调用函数是有一定的时间和空间方面的开销。

结论:

针对一些函数体代码不是很大,但又频繁调用的函数来讲,解决其效率问题更为重要。而内联函数的引用就是为了解决这一问题。


0x03 static inline func

集合了了static和inline的特性,是个内联函数,同时保证这个内联函数只在当前文件中可用。

意义:
不会污染命名空间,同样的内联函数名,可以再其他文件中声明。

注意:

static inline应用的场景主要是C/C++。Objective-C中的方法是无法使用static进行声明的。

相关文章

  • static inline 延伸

    此内容分为两个知识点: 0x01 static 字面意思为静态,一直在那里 修饰变量 main函数之前初始化,并且...

  • const,static,extern简介

    解释关键字 static,const,inline,Static,inline,volatilestatic 修饰...

  • static, static inline, extern, r

    static, static inline, extern, register, static const htt...

  • static inline

    在公司的代码中, 看到前辈写了一个判断对象是否为空值的方法, 瞬间被这个static inline弄得晕头转向, ...

  • static inline

    2019/07/16今天在看DPDK负载均衡的实例代码中,通过函数跳转,看到官方API后,发现了static in...

  • static inline

    我们知道一般的函数调用都会通过call的方式来调用,hacker很容易对一个函数做手脚,如果是以inline的方式...

  • 结构体

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

  • 内联函数 inline

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

  • iOS OC内联函数 inline

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合. static自不用多说,...

  • iOS OC中内联函数inline

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合。 static自不用多说,...

网友评论

      本文标题:static inline 延伸

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