C 语法中static 和inline联合使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语法中static 和inline联合使用相关的知识,希望对你有一定的参考价值。

最近在学习阶段,翻阅代码。发现有一个用法比较让我奇怪,就上网查了一下

1
static inline void somefunction(void);

这里是举例说明,这行代码是放在.h文件中的。

在此之前,如果对inline概念不了解的请自行wiki

http://zh.wikipedia.org/wiki/%E5%86%85%E8%81%94%E5%87%BD%E6%95%B0

但是因为自己用得比较少,所以没有太关注,

当然也没有inline修饰符前面要加static的概念

 

仔细想想:

1、首先,inline函数是不能像传统的函数那样放在.c中然后在.h中给出接口在其余文件中调用的,

因为inline函数其实是跟宏定义类似,不存在所谓的函数入口。

2、因为第一点,会出现一个问题,就是说如果inline函数在两个不同的文件中出现,也就是说

一个.h被两个不同的文件包含,则会出现重名,链接失败

所以static inline 的用法就能很好的解决这个问题,

使用static修饰符,函数仅在文件内部可见,不会污染命名空间。

可以理解为一个inline在不同的.C里面生成了不同的实例,而且名字是完全相同的

 

PS: inline修饰符不同的编译器不一样,下次有空再补充 

IAR中需要手动开发 并直接可以使用,keil中直接__inline即可 只要不是O0就会有内联处理@20140417

以上是关于C 语法中static 和inline联合使用的主要内容,如果未能解决你的问题,请参考以下文章

内联函数:static inline 和 extern inline 的含义

C++ const,static,inline

static inline和inline的区别——stm32实测

C++特性总结

C++基础语法梳理:inline 内联函数!虚函数可以是内联函数吗?

gcc 警告:已使用但未定义的函数