想看下内联函数跟普通函数外观有什么区别
//内联函数定义 inline int sum(int a,int b){ return a + b; } //普通函数定义 int sum1(int a,int b){ return a + b; }
多了inline关键词。
想起之前写C语言,把一些重复做的事情封装成一个函数,真是很大的进步。但是他们说调用函数比直接代码要慢些。内联函数有什么好处呢?避免了函数调用的开销。也就是说如果我写下面的代码:
printf(“a+b=%d\n”,sum(a,b));
它会把代码展开变成
printf(“a+b=%f\n”,(a + b));
有点像宏。一般说来,内联机制适用于优化小的,只有几行的而且经常被调用的函数。还有递归函数大多也不支持。
内联函数的定义对编译器必须是可见的,以便编译器能够在调用点内联展开该函数的代码,所以仅有函数原型是不够的。
完整代码:
#include <stdio.h> //内联函数定义 inline int sum(int a,int b){ return a + b; } //普通函数定义 int sum1(int a,int b){ return a + b; } int main(int argc, char* argv[]) { int a = 1,b = 2; //下面的调用等于 printf("a+b=%f\n",(a + b)); printf("a+b=%d\n",sum(a,b)); //普通函数调用 printf("a+b=%d\n",sum1(a,b)); return 0; }306