C++ inline函数有什么用

#include<iostream>
using namespace std;
inline int max(int x,int y);
void main()
{
int a,b,c,result;
cout<<"请输入三个数"<<endl;
cin>>a>>b>>c;
result=max(a,b);
cout<<"最大数为:"<<max(result,c)<<endl;
}
inline int max(int x,int y)
{
return (x>=y)?x:y;
}

inline int max(int x,int y);这一句是什么意思?请详细一点说明

如果函数足够短那么编译器会把inline的函数的内容直接替换到调用的地方, 如这里会把result=max(a,b)替换成result=(a>=b)?a:b;

调用一个函数在指令层面上是设计到参数出入栈之类的, 比直接执行一个表达式要慢, 内联函数可以提高运行效率
另外写了inline的地方编译器不一定会inline, 没写inline的地方编译器觉得能优化一下那么也会自动inline追问

如这里会把result=max(a,b)替换成result=(a>=b)?a:b;是 return (x>=y)?x:y;这一句吗?把他替换成 return(result,c)?result:c;?

追答

也不是像宏那样的做简单替换, 大致上是在编译时把函数调用的过程(call, ret等)省去, 把被内联的函数产生的那堆指令贴到调用的地方

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-11
inline定义函数为 内联函数,对内存的花销小,效率更高!
相似回答