内联函数

随声附和 提交于 2020-02-07 01:41:41

内联函数
#include
using namespace std;
//内联函数概念:inline函数是一种特殊的函数,具备普通函数的特征(参数检查,返回类型等)
//内联函数没有普通函数的额外开销(压栈,跳转,返回)
//内联函数由编译器处理,直接将编译后的函数体插入调用的地方,类似于展开运行
//内联函数的限制:不存在任何形式的循环语句,不存在过多的条件判断语句,函数体不能过于庞大,不能对函数进行取址操作 内联函数必须声明在调用语句之前
//****内联函数只是省去了普通函数的压栈等开销,当函数体的执行开销远大于压栈等所用的开销时,内敛将无意义!
//优点:节省开销 缺点:内联函数的函数体在代码段中会出现多个“副本”,会增加代码段的空间
//本质:以牺牲代码段空间为代价,提供程序的运行时间和效率
//适用范围:函数体很小,且被频繁使用

inline int max(int a,int b){

	 return a>b?a:b;
}
#define MAX(a,b) (a)>(b)?(a):(b) //由预处理器处理,进行简单的文本替换,没有任何编译过程
int main(){
	int a=10;
	int b=20;
	int c = MAX(a++,b++);
	cout<<"c: "<<c<<endl;//c=21;(a++)>(b++)?(a++):(b++) 宏函数不具备编译器的语法检测功能 由预处理器处理
	int x = 10;
	int y = 20;
	int d = max(x++,y++);//d=20 inline函数具备编译器的语法检测功能 
	cout<<"d: "<<d<<endl;
	system("pause");
	return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!