内联函数和宏

使用宏和内联函数都可以节省在函数调用方面所带来的时间和空间开销。二者都采用了空间换时间的方式,在其调用处进行展开:

  • 在预编译时期,宏定义在调用处执行字符串的 原样 替换。在编译时期,内联函数在调用处展开,同时进行函数类型检查。

对比宏的缺陷,内联函数的优点:

  • 内联函数遵守强加给函数的所有规则和类型安全,这可以避免将意外或非法的参数作为实参来传递它。
  • 定义内联函数的语法和其他函数相同,只是在函数声明中使用关键字inline。
  • 将表达式作为实参传递给内联函数时,将在进入函数体之前被计算,因此只被计算一次。传递给宏的表达式可能被计算多次,从而导致不安全和意外的副作用。(宏#define square(x) (x*x) ,执行square(1+2),结果为5)
  • 可以使用调试器对内联函数进行调试;而对于宏而言是不可能的,因为宏将在分析程序接手前和符号创建前被扩展。
  • 内联函数可以提高程序的可读性和可维护性,因为他们使用的语法和常规函数调用相同,而且不会意外地修改参数。

何时使用内联函数:

  1. 小型方法,如私有数据成员的存取函数
  2. 返回对象状态信息的函数
  3. 小型函数,通常不超过3行
  4. 不断被 调用的小型函数

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值