C++基础之 “内联函数”

想看下内联函数跟普通函数外观有什么区别

//内联函数定义
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;
}

文章源地址:http://www.waitingfy.com/?p=306;

306

Leave a Reply

Name and Email Address are required fields.
Your email will not be published or shared with third parties.