Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1686510
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: C/C++

2007-03-02 11:34:52

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

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

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

inline的引入大部分是为了参数类型安全检查防止边界效应。如果是函数宏,可能有边界效应。
阅读(868) | 评论(0) | 转发(1) |
0

上一篇:如何选购基金

下一篇:extern的小结

给主人留下些什么吧!~~