日历
网志分类
· 所有网志 (12)
· 算法 (5)
· c/c++ (2)
· 软件开发 (1)
· LabVIEW (3)
· 经验之谈 (1)
站内搜索
友情链接
· 我的歪酷 非非共享界
· LabVIEW虚拟仪器家园

订阅 RSS

0009698

歪酷博客

Tech Lead's Section


« 上一篇: 如何在二叉树中打印从根结点到所有叶子结点的路径 下一篇: 全排列 »
樱木 @ 2006-12-13 22:18

最大的区别是内联函数避免了普通函数调用的开销,因为普通函数调用之前要做三件事:
1)将所有实参、返回地址等信息传给被调用函数保存
2)为被调用函数的局部变量分配空间
3)将控制转移到被调用函数的入口

从被调用函数返回主调函数前系统也必须完成三件事:
1)保存被调用函数的计算结果(比如return返回的)
2)释放被调函数的数据区
3)依据被调函数保存的返回地址将控制权转移到调用函数

上面两个步骤有时候分别称为“保护现场”和“恢复现场”,因为不少书上是这么称呼的。知道了这些就不难理解对于小规模函数为什么inline优于普通函数了,因为节省了普通函数调用的开销(overhead)。overhead这个词大家以后也会经常看到。请记住:inline的特点就是编译器把函数体在调用的地方直接“展开”!这点极其类似于宏,只是后者是预处理器来进行替换的,且inline的安全性优于macro。




评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定