【C++】深入理解“内联与宏”

内联函数

内联代码,程序无需跳到另一个位置执行代码,再跳回来。因此,内联函数运行速度比常规函数稍快,但代价是需要占用更多内存。

所以应该有选择性的使用内联函数,如果函数执行代码的时间比处理函数调用的 时间长,则即使使用内联函数,节省也没啥明显改进,而如果代码执行时间很短,则内联函数调用就可以节省大部分调用所占的时间。

                                            

如何使用?

  • 在函数声明前加上关键字  inline
  • 在函数定义前加上关键字  inline

然而

程序员要求使用内联函数是,编译器不一定会满足这种要求。它很可能认为函数过大或者认为调用了自己(不能递归!),  而有的是编译器就没有这个功能

那么宏和内联有什么区别呢?

inline工具是C++新增的特性

C语言使用预处理器语句#define来提供宏--内联函数的原始实现

举例子:

#define  square(x)  x*x

宏并不是传递参数,而是传递文本替换,x仅仅是“参数”的符号标记

a=square(5.0);     //  替换  a=5.0*5.0;

b=square(4.5+7.5);         // 替换  b = 4.5+7.5 * 4.5 +7.5 ;

扫描二维码关注公众号,回复: 4787421 查看本文章

c=square(C++);               //替换   c = C++*C++ ; 

如果确实想使用这个宏?怎么办?

#define  square(x)   ((x)*(x))

然而,使用新定义后仍在某些情况下存在问题!请大家务必注意!

 

猜你喜欢

转载自blog.csdn.net/qq_15698613/article/details/85840333
今日推荐