函数的调用过程中需要一定的开销,例如:保护调用的运行环境,参数传递,执行调用的指令等。所以调用函数会降低程序的执行效率,尤其是在多次频繁的进行调用时会大大的降低程序的效率。
C++提出了两种解决方案:宏函数和内联函数
使用这两种方式都可以节省在函数调用方面所带来的时间和空间开销。两者都采用了空间换时间的方式,在调用地方进行展开。
宏
宏定义又称为宏代换,宏替换,简称为“宏”
宏定义的分类
1.不带参数的宏定义
- 格式:#define 标识符 字符串
- 其中的标识符就是所谓的符号常量,也称为“宏名”。预处理(预编译)工作也叫做宏展开:将宏名替换为字符串
2.带参数的宏定义(宏函数)
- 格式:#define 宏名 (参数表)字符串
- 除了一般的字符串替换,还要做参数代换
宏函数的优缺点
优点:
- 增强代码的复用性。在预处理的阶段会将使用宏函数的位置用宏展开,少了函数压栈等开销,因此可以提高程序运行的效率。
- 提高代码的可读性。
缺点:
- 不方便调试宏。(因为预编译阶段进行了替换)
- 导致代码可读性差,可维护性差,容易使用错误
- 不能进行类型检测,程序不安全
内联函数
inl