C++内联函数

#include <iostream>
using namespace std;

/*
什么时候使用内联函数?
1.函数代码体积不大
2.频繁调用的函数
*/
//使用inline修饰函数的声明或者实现,可以使其变成内联函数
//建议声明和实现都增加inline修饰

inline void func();
inline int sum(int v1, int v2);

inline void func() {
	cout << "func()" << endl;
}
inline int sum(int v1, int v2) {
	return v1 + v2;
}

//内联与宏
/*
1.内联函数和宏,都可以减少函数调用的开销
2.对比宏,内联函数多了语法检测和函数特性
3.#define sum(X) (X + X) //24
  #inline int sum(int X){return X + X;}//22
  int a = 10; sum(++a)
*/
#define add(n1, n2) n1 + n2

int main() {

	func();//编译器会将函数调用直接展开为函数体代码,相当于直接执行cout << "func()" << endl
	//不会为函数开辟栈空间(分配内存),执行效率提高
	//会增加代码体积

	int c = sum(10, 20);//相当于直接执行c = 10 + 20
	cout << c << endl;

	//
	int n = add(10, 20);//宏替换,执行n=10 + 20
	cout << n << endl;

	getchar();
	return 0;
}
//超过10行尽量不要内联
//有些函数即使声明为inline,也不一定会被编译器内联,比如递归函数
//无法展开为函数体代码,无法内联,如下:
//inline void run() {
//	run();
//}
//int main() {
//	run();
//	return 0;
//}

表达式
//int a = 1;
//int b = 2;
//(a = b) = 3;//a = 3, b = 2
//(a > b ? a : b) = 4;//a大于b,返回a,否则返回b. a = 1, b = 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值