内联与宏定义
来源:互联网 发布:陌陌站街软件下载 编辑:程序博客网 时间:2024/06/03 15:31
转自:http://www.cppblog.com/xczhang/archive/2008/01/09/40829.html
宏定义可以提高效率,但是宏不是函数。预编译通过代码复制的方式代替函数调用,省去了诸如函数压栈等系统过程,从而提高了效率。但是由于宏定义仅仅是代码替换,所以引起很多问题。
#define MAX(a,b) (a) > (b) ? ( a) : (b)result=MAX(A,B) +2 编译器对其解释为 (a) > (b) ? (a) : (b)+2 .导致该语句执行与预期不符。
宏定义的另一个缺点就是无法访问类的私有成员。
而内联函数通过把代码直接复制进调用函数体内,避免产生某些系统过程,同样提高了效率,但是内联函数可以进行类型检查,this指针同样能应用,这是宏定义无法比拟的。
内联函数必须是函数的声明和定义一体,且在函数前面加inline。
1、内联函数在可读性方面与函数是相同的,而在编译时是将函数直接嵌入调用程序的主体,省去了调用/返回指令,这样在运行时速度更快。
2、内联函数可以调试,而宏定义是不可以调试的。
内联函数与宏本质上是两个不同的概念如果程序编写者对于既要求快速,又要求可读的情况下,则应该将函数冠以inline。下面详细介绍一下探讨一下内联函数与宏定义。
- 内联与宏定义
- 内联函数与宏定义
- 内联函数与宏定义
- 内联函数与宏定义
- 内联函数与宏定义
- 内联函数与宏定义
- 内联函数与宏定义
- 内联函数与宏定义
- 内联函数与宏定义
- 内联函数与宏定义
- 内联函数与宏定义
- 【C++】宏定义与内联函数
- 内联函数与宏定义 转帖
- C++内联函数与宏定义
- 内联函数与宏定义的区别
- 内联函数与宏定义详解
- C++内联函数与宏定义
- 内联函数与宏定义区别
- java.io.*中的设计模式之 装饰(Decorator)模式
- 在ASP.NET 2.0中操作数据:在GridView控件中使用TemplateField
- wxWidgets与其他工具库的比较(下)
- 设计模式2——Proxy设计模式
- 整数中指定位取反
- 内联与宏定义
- opencv 背景差分法 改进OTSU阈值去噪
- DudaMobile:任何人都可以DIY移动网站
- DirectUI下不规则按钮的点选方式
- chrome自带抓包
- 黑马程序员_学习日记6_C#基础归纳总结之堆栈分配图解
- word转pdf时visio图片问题的解决方法
- 代码问题,大家来帮忙看看啊
- OBJECT ARX 实体类的炸开,求交,外包矩形函数使用