ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[info]# 内置函数 ## **内联函数的需要性** 函数调用与返回时,都需要一定的时间和空间的开销;而通过关键字**inline**将一个函数声明成内联函数后,编译器会将该函数的调用处理成编译前的代码替换,而不是象普通函数在编译时的控制转移,从而提高了效率. ## **内联函数的特点** - 内联函数的代码必须在替换之前已经生成,所以内联函数必须在被调用之前声明或定义. - 内联函数中,不能含有复杂的结构控制语句,如switch,while. - 内联函数不能是递归函数. - 内联函数只适合于只有1~5行的小函数. ## **内联函数与宏定义** **宏定义** ``` #define MAX(a,b) ((a)>(b)?(a):(b)) ``` - 书写格式有过分的讲究,MAX与括号之间不能有空格,所有的参数都要加括号. - 求值时会有副作用. - 不作参数的类型检查. **内联函数**可以有效解决上述问题,替代宏定义. ``` inline int MAX(int a,int b) { return a>b?a:b; } ``` ## **例子** ``` #include <iostream> using namespace std; inline int max(int,int, int); //声明函数,注意左端有inline int main( ) { int i=10,j=20,k=30,m; m=max(i,j,k); //编译前被替换成:if (j>i) i=j;if(k>i) i=k;m=i; cout<<”max=”<<m<<endl; return 0; } inline int max(int a,int b,int c) //定义max为内置函数 { if(b>a) a=b; //求a,b,c中的最大者 if(c>a) a=c; return a; } ```