弱弱的问一下 static inline 有什么作用?

one's pygmy effort 2014-09-22 06:27:21
弱弱的问一下 static inline 有什么作用?
1.
uboot的arch\arm\include\asm\arch下的s3c2400.h中:
static inline struct s3c24x0_clock_power *s3c24x0_get_base_clock_power(void)
{
return (struct s3c24x0_clock_power *)S3C24X0_CLOCK_POWER_BASE;
}
......
中的 static inline 有什么作用呢?

2.
在.h 文件中定义了 static inline 函数 , 当.c 文件包含(#include)这个 .h 文件后, 在.h 文件中定义的static inline 函数 也就相当于在 .c 中定义的static inline 函数, 因为.h已经被.c 文件包含了
那uboot的arch\arm\cpu\arm920t\s3c24x0下的speed.c 中
#include <common.h>
#ifdef CONFIG_S3C24X0

#include <asm/io.h>
#include <asm/arch/s3c24x0_cpu.h>

#define MPLL 0
#define UPLL 1
哪一个是包含 arch\arm\include\asm\arch 下的 s3c2400.h 中 static inline 的头文件呢? 还是其它的原因呢??

3.
static inline 是静态的:因为这些函数其实统一接口,大家都需要实现这个接口,如果不用static,那就很有可能重名。编译就会出错了。 这里的接口 指什么呢?? 可以截图看么??
static inline 是内联的:小函数,而是调用的很频繁,用内联会提升很多效率! 那在1. 中可以不指定 XX是内联函数么 ??




本人小白,若有用词不当的地方还请指正,高手勿喷。谢谢!!
...全文
1066 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
one's pygmy effort 2015-05-15
  • 打赏
  • 举报
回复
不好意思,前一段时间太忙忘了结贴,给帖子加10分,希望大家不要在意。
百变狸猫 2014-11-14
  • 打赏
  • 举报
回复
头文件里定义的函数,如果不加inline,就会报冲突.inline的意思是函数体在调用的地方直接展开,有点类似宏的意思.但实际上inline只是给编译器一个建议,具体采用不采用编译器自己说了算.使用inline的最实际的好处就是可以在.h文件中定义函数体而不会报冲突. static较少见在.h里面使用,一般都是在.cpp文件里面使用,表示这个函数名或者变量名只有在这个文件范围内才有效.
fly 100% 2014-10-16
  • 打赏
  • 举报
回复
static  本文调用 防止和外部的函数名字等冲突  隔离作用 inline  预编译会运算   减少最后编译的代码量   减小汇编行数
红尘-有梦 2014-10-16
  • 打赏
  • 举报
回复
static 表示函数只在本文件被调用 inline是内联函数,编译的时候会在调用该函数的地方将函数展开,优点是程序运行时省去了函数调用耗费的时间,缺点是占用了空间。
「已注销」 2014-10-05
  • 打赏
  • 举报
回复
如果编译器能正确inline函数的话,static就是多余的,但是如果编译器忽略inline前缀的话,static就是必须的。在vc里面还有个特殊的关键字 __forceinline,在vc上用他就不需要static了
木马男孩 2014-09-30
  • 打赏
  • 举报
回复
static 用于修饰函数的时候,意思是此函数只能在此文件中使用,所以static inline 病不冲突,按字母理解就行了
one's pygmy effort 2014-09-24
  • 打赏
  • 举报
回复
http://blog.csdn.net/wangzhanhang/article/details/35143#reply中讲到:“关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。”有人说这是错的也有人说这是对的 那这到底是对的还是错的呢??
91program 2014-09-23
  • 打赏
  • 举报
回复
两个关键字,分开来理解 static:静态函数,这也是最基本的语法。包含到不到的源文件中时,每个源文件中相当有一份独立的 static 函数。可以说是说来防重名的,但也不只是这个功能。 inline:内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。可以提高编译效率!
one's pygmy effort 2014-09-22
  • 打赏
  • 举报
回复
uboot版本:u-boot-2010.06

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧