Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305982
  • 博文数量: 163
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-23 17:54
个人简介

做一个“好”人... 思想上会思考; 生活上有追求; 技术上不停步; 工作上有担当;

文章分类

全部博文(163)

文章存档

2016年(1)

2015年(143)

2014年(19)

我的朋友

分类: C/C++

2015-11-30 23:37:44

原文地址:inline函数的小结 作者:pascal4123

C89不支持内联函数,C99才支持。  
   
由于inline函数具有内部链接,因此数个文件定义相同名字的内联函数不会发生冲突,而类函数宏就不行,会产生重复定义。  
   
inline函数是真正的函数,可以由语句组成;但函数宏所做的只是替换,不是真正的函数,当然也不能有语句。

函数中的语句大于8句以上的话,一般编译器就自动将你的inline函数转化为uninline函数。

宏是把那个代码在当前位置展开,根本不用测试,肯定是最快的
   
内联函数编译之后应该是把代码直接插到调用位置(应该是指编译器不优化情况下)所以执行的时候不会去压栈,调用函数代码,退栈,所以如果执行的次数多,就会比较快。
   
执行到非内联函数时,函数不在当前位置,是个指针,然后经历压栈,调用函数代码,退栈三个过程。会比较慢。

inline的引入大部分是为了参数类型安全检查防止边界效应。如果是函数宏,可能有边界效应。
阅读(546) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~