c++内联函数与宏的区别

c++内联函数

c++内联函数与常规函数的主要区别不在于编写方式的不同。在于c++编译器如何将它们组合到程序中。

执行到函数调用指令时,程序将立即存储该指令的内存地址,变将函数复制到堆栈,跳到标记函数起点

的内存单元,执行函数代码,函数体执行完后跳到地址被保存的指令处。来回跳跃并记录跳跃位置,需要

一定的开销。

c++内联函数提供另外一种选择,编译器将使用相应的函数代码替换函数调用。程序无需跳到另外一个位置

执行代码,然后再跳回来。因此,内联函数的运行速度比常规函数稍快,当代价是需要占用更多的内存,特别

是调用位置过多的时候。

所以应该有选择的使用内联函数。建议函数体中代码较短时考虑使用内联函数,如求最大值,平方等等。

要使用内联函数,必须采用下述错数之一:

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

内联函数与宏

宏是内联代表的原始实现。

内联代码的参数是按值传递的,而宏是通过文本替换的方式。

//如内联函数 
inline double square(double x){return x*x};
//宏
#define square(x) x*x
//square(3.5+1.5) 内联与宏的结果不同。
//square(x++)   内联与宏的结果不同。
//只有在square(x) 是内联与宏的结果相同。 x一个数










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值