一、内联函数的介绍
被inline修饰的函数称为内联函数,编译器在编译C++代码时,遇到内联函数就会原地展开,这样就避免了函数压栈的开销。是一种以空间换时间的手段(浪费更多空间存代码,但节省了建立栈帧的开销)。解决了频繁调用函数,建立栈帧的开销。
二、内联函数的使用
一般适用于小函数(大概二三十行以内),如果函数过大,编译器会自动调用函数,建立栈帧,不会就地展开。因为函数过大,如果函数调用过多,效率会变低,还不如调用函数,建立栈帧,虽然建立栈帧需要时间开销,但也比函数多次展开效率高。
#include <iostream>
using namespace std;
inline void swap(int& a, int& b) {
int tmp = a;
a =b ;
b = tmp;
}
int main() {
int a = 100, b = 200;
swap(a, b);
//相当于原地展开
//int tmp = a;
//a =b ;
//b = tmp;
cout << a << " " << b << endl;
return 0;
}
三、宏的优缺点
C语言为了提高效率使用了宏,然而宏也有缺点。
优点:增强代码的复用性,提高了性能
缺点:不方便调试;代码可读性差,可维护性差,容易误用;没有类型安全的检测
为了克服这些缺点,可以利用C++优化一下
C++ C语言
inline(内联函数) 替换 宏函数
const int N=10; 替换 #define N 10