首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
内联函数的讲解
时间:
2015-07-20 16:32:42
阅读:
116
评论:
0
收藏:
0
[点我收藏+]
标签:
一、什么叫inline函数?
inline(小心,不是online),翻译成“内联”或“内嵌”。使用来替代“宏“的
意指:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。
好处:省去了调用的过程,加快程序运行速度。(函数的调用过程,由于有前面所说的参数入栈等操作,所以总要多占用一些时间)。
不好处:由于每当代码调用到内联函数,就需要在调用处直接插入一段该函数的代码,所以程序的体积将增大。
生活实例:
拿生活现象比喻,就像电视坏了,通过电话找修理工来,你会嫌慢,于是干脆在家里养了一个修理工。这样当然是快了,不过,修理工住在你家可就要占地儿了。内联函数并不是必须的,它只是为了提高速度而进行的一种修饰。要修饰一个函数为内联型,使用如下格式:
inline 函数的声明或定义
简单一句话,在函数声明或定义前加一个 inline 修饰符。
inline int max(int a, int b)
{
return (a>b)? a : b;
}
二、inline函数的规则以及注意事项
(1)、(递归不可)含有递归调用的函数不能设置为inline;
(2)、(程序复杂不可)使用了复杂流程控制语句:循环语句和switch语句,无法设置为inline;
(3)、(程序应小) 由于inline增加体积的特性,所以建议inline函数内的代码应很短小。最好不超过5行。
(4)、(特殊情况的转换显示警告)inline仅做为一种“请求”,特定的情况下,编译器将不理会inline关键字,而强制让函数成为普通函数。出现这种情况,编译器会给出警告消息。
(5)、(程序的执行顺序)在你调用一个内联函数之前,这个函数一定要在之前有声明或已定义为inline,否则没有被调用。
如下面代码片段:
//函数一开始没有被声明为inline:
void foo();
//然后就有代码调用它:
foo();
//在调用后才有定义函数为inline:
inline void foo()
{
......
}
代码是的foo()函数最终没有实现inline;
(6)、为了调试方便,在程序处于调试阶段时,所有内联函数都不被实现。
(7)、在一个文件中定义的内联函数不能在另一个文件中使用。它们通常放在头文件中共享。
参考网址:
上面是在c++中,而在javascript中将会如何呢?
下面简单介绍:
一般的javascript函数:
<script>
function init () {
alert(”I am saying something important.“);
}
window.onload() = init;
</script>
上面是普通的函数,将其赋值给onload()事件,一充当该事件的处理,但我们可以使用内联函数,这样可以避免专门对函数的的定义:
eg:
<script>
window.onload = function()
{
alert(”I am saying something important.“);
}
</script>
优势:直接特定的作用域内引用(局部)变量,而不必要将这个函数作为参数传递给这个函数。
http://blog.csdn.net/forarrow/article/details/6394931
版权声明:本文为博主原创文章,未经博主允许不得转载。
内联函数的讲解
标签:
原文地址:http://blog.csdn.net/u012496940/article/details/46968535
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!