C++博客 :: 首页 :: 联系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用链接

留言簿(48)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 369717
  • 排名 - 52

最新评论

阅读排行榜

评论排行榜

宏定义可以提高效率,但是宏不是函数。预编译通过代码复制的方式代替函数调用,省去了诸如函数压栈等系统过程,从而提高了效率。但是由于宏定义仅仅是代码替换,所以引起很多问题。
#define  MAX(a,b)  (a) > (b) ? ( a) : (b)
result=MAX(A,B) +2  编译器对其解释为 (a) > (b) ? (a) : (b)+2 .导致该语句执行与预期不符。
宏定义的另一个缺点就是无法访问类的私有成员。

而内联函数通过把代码直接复制进调用函数体内,避免产生某些系统过程,同样提高了效率,但是内联函数可以进行类型检查,this指针同样能应用,这是宏定义无法比拟的。
内联函数必须是函数的声明和定义一体,且在函数前面加inline。
posted on 2008-01-09 21:38 sdfasdf 阅读(1302) 评论(1)  编辑 收藏 引用 所属分类: C++

Feedback

# re: 关于宏定义和内联函数的学习 2008-01-10 14:06 TheAnswer
hoho 这个话题我也写过一篇

http://www.cppblog.com/theanswerzju/archive/2007/12/24/39461.html
  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理