内联函数的问题

内联函数
#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值