通俗易懂说内联函数 inline

通俗易懂说内联函数 inline

1. 背景

内联函数inline为了解决C语言中的宏#define存在的问题而诞生。
因为,宏虽然看起来像函数,但是它使用预处理器实现的。
宏的优点是:省去了函数调用的开销;
宏的缺点是:没有类型安全性检查;

2. 优点

  1. 获得宏带来的效率,即免除了函数调用成本;
  2. 又解决了宏的缺点,inline函数具有类型安全检查;

3. 原理

编译器直接将内联函数插入到函数调用的地方

4. 限制

内联函数inline被限制使用在,小型且平凡调用的函数上面

5. 请求

内联函数inline对编译器来说只是一种请求,一种建议,而编译器可以选择也可以忽略这个请求,建议

6. 缺点

  1. 内联函数会使代码膨胀,造成额外的换页行为,降低效率;
  2. 内联函数无法随着程序库的升级而升级,必须重新编译;

7. 举例

求两个整型数的最小值:

	//宏实现(注:宏记得加括号)
	#define MIN(a,b) ( ( (a)<(b) ) ? (a):(b) )
	
	//inline实现
	inline int getMinVal(int a,int b){
		return ( (a)<(b) ) ? (a):(b);
	}

猜你喜欢

转载自blog.csdn.net/lqy971966/article/details/88987667