CPP-内联函数
参考:https://blog.csdn.net/weixin_45031801/article/details/141035506
一、什么是内联函数?
内联函数,与普通函数基本相同。区别只在于内联函数在函数定义前需要加上inline
关键字。
内联函数的目的:
- 代替部分宏定义,简化代码;
- 代替普通函数,提高程序运行效率。
二、宏定义
1. 宏定义的声明
1 |
如:#define ADD(x, y) ((x) + (y))
注意:name
与parament-list
的左括号之间不能有空格,否则会被解释为stuff
的一部分。
2. 宏定义的优缺点
优点:
- 提高了复用性和可维护性(一改多改);
- 参数类型不固定:类似函数重载,可以传入不同参数实现运算;
- 直接替换,运行效率更高:宏不是函数,因此不会在栈上建立函数栈帧,减少了汇编中
push
和call
的步骤,提高了运行效率;
缺点: - 会带来运算符优先级问题,导致程序出错:在不同的参数中可能会有不同的结果,所以需要给每个参数加括号。
- 无法调试:因为不是函数,所以无法调试;
- 没有类型安全的检查:直接替换;
三、内联函数
1、概念
以inline
关键字修饰的函数,被称为内联函数。
C++编译器在编译时,会在调用内联函数的地方展开,因此没有函数调用建立栈帧的开销(普通函数调用需要额外的步骤来保存状态、传递参数、执行函数体,接收返回值等)。
该功能与宏定义一致,提升了程序运行的效率。
1 |
|
1 | oper_add(int, int): |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kure's Blog!