宏、内联函数、普通函数的区别

宏和内联函数的区别

  • 宏是编译阶段处理的,纯粹是字符串替换(坑确实很多,尤其是在表达式替换的时候),没有任何的类型检查等,十分的不安全;而 inline
    内联函数的处理是发生在编译阶段的,有完整的语句类型检查,比宏更安全
  • 宏是无法调试的,inline 函数在 debug 版本下和普通函数一样,出了问题很方便进行断点调试,定位问题
  • 大量的宏很不方便去阅读源码,inline 函数和普通函数一样,结构模块化清晰,方便阅读代码
  • 用宏来代替函数定义,替换后还是一个正常的函数调用,有函数调用开销(栈帧开辟和回退);而是用 inline内联函数是在编译时期,在函数调用点,把函数的代码直接展开,省却了函数调用的开销,代码运行效率高

inline 内联函数和普通函数的区别如下:

  • 普通函数的调用在汇编上有标准的 push 压实参指令,然后 call 指令调用函数,给函数开辟栈帧,函数运行完成,有函数退出栈帧的过程

  • 而 inline 内联函数是在编译阶段,在函数的调用点将函数的代码展开,省略了函数栈帧开辟回退的调用开销,效率比较高!

图论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值