减少函数调用栈桢次数(C宏函数,C++内联函数)

文章探讨了C语言中宏函数的优缺点,如提高效率但缺乏类型安全,并对比了C++的inline函数,强调inline用于空间换时间,以及在不同编译模式下的表现。同时指出,inline在某些情况下可能不被编译器识别为内联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言:宏函数

        不方便检查错误,但是方便维护,容易出错。

#include<iostream>
using namespace std;
//C->宏函数
// advantage:代码可维护性,宏函数提高效率,减少栈桢的建立
// disadvantage:可读性差,没有类型安全的检查,不方便调试

//宏函数,后面没有分号
#define ADD(a,b) ((a)+(b))
//多行宏函数应该注意换行符
#define SWAP(a,b)\
int temp = a;\
a = b;\
b = temp;

int main(void) 
{
	ADD(1, 2);
	if (ADD(1, 2)) {};
	ADD(1, 2) * 3;//外面括号运用场景
	int x = 1, y = 2;
	ADD(x | y, x & y);//里面括号运用场景
	int a = 10, b = 20;
	SWAP(a, b);
	cout << a <<" " << b;
	return 0;
}

 C++ inline(感觉很像关键字register)

#include<iostream>
using namespace std;
//C++->inline 符合条件的情况下展开
//尽量用从const,enum,inline替代宏
// 建议类似(register),递归不适合或者函数内部实现代码很长
// 内联以空间换时间,编译出来的程序变大
//不能声明和定义声明
inline int Add(int a, int b)
{
	printf("%d", a);
	return a + b;
}
inline void func(int a, int b)
{
	cout << a + b << endl;
	cout << a + b << endl;
	cout << a + b << endl;
	cout << a + b << endl;
	cout << a + b << endl;
	cout << a + b << endl;
	cout << a + b << endl;
}
int main(void)
{
	func(1, 2);
	Add(2, 3);
	return 0;
}

但是我发现我的VS在debug状态下没有识别inline关键字,不过在release状态下可以

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值