文档章节

C 语法中static 和inline联合使用

卜霞森
 卜霞森
发布于 2014/04/15 15:24
字数 402
阅读 4610
收藏 8

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

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


© 著作权归作者所有

卜霞森
粉丝 2
博文 50
码字总数 32877
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

卜霞森
卜霞森 博主
开启了C99之后 keil支持inline关键词 不需要另行修饰
c语言中的的内联(inline)函数

c语言中的的内联(inline)函数 发表于 2011 年 01 月 26 日 由 admin c/c++中的inline,使用在函数声明处,表示程序员请求编译器在此函数的被调用处将此函数实现插入,而不是像普通函数那样生...

长平狐
2012/09/03
308
0
apolloxlua 源码内使用macros

本文讲解如何在两种模式下使用macros,首先在apolloxlua下有两种模式, 一种是 web模式另一种是工具模式。 web模式下我们可以在浏览器端来使用,但是有一些限制, 就是比如说某些native的api...

钟元OSS
2018/08/09
37
0
GCC and C99 inline

C语言的inline 转以前我用Docbook写的一篇关于C语言inline关键字使用的文章。唉,要是能用docbook直接写Blog就好了。用得越多发现Docbook这个东西真是越好用啊~~ 本文介绍了GCC和C99标准中...

长平狐
2012/09/03
123
0
Linux 内核数据结构:位图(Bitmap)

本文由伯乐在线 -乔永琪 翻译,唐尤华 校稿。未经许可,禁止转载! 英文出处:0xAX。欢迎加入翻译组。 本系列: 《Linux 内核数据结构:Radix 树》 《Linux 内核数据结构:双向链表》 位图和...

伯乐在线
2016/12/10
0
0
C++中的 .h 和 .cpp 区别详解

在C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析。于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package的概念。 对于以C起步,C#作为“母语...

刘小米_思聪
2014/09/18
2.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
10
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
23
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部