C++宏与内联函数

本文介绍了C语言中宏定义的使用,以及C++中如何用内联函数、const和enum替代宏。宏定义通过#define进行,预编译时进行替换,可能导致运算优先级问题。内联函数提供了类型安全,减少了调用开销,但不适合复杂或循环代码,并且inline是编译器的建议而非保证。
摘要由CSDN通过智能技术生成

在C语言中我们可能使用宏去定义函数
但是在C++中我们常常使用内联,const,enum去代替宏,

一.宏

每个宏 我们需要已#define 进行开头
使用的方式是
#define 待替换字符串 替换字符串
中间 用空格隔开
我们可以用待替换字符串表示替换字符串,在预编译阶段,编译器会为我们替换。
下面我们来看看代码

#include<stdio.h>
#define a A
int main()
{
	int a=0;
	printf("%d",a); 
	printf("%d",A);
}

运行结果:
在这里插入图片描述
由于我们定义了宏,在预编译时期我们将A替换成了a,最后程序可以运行

宏定义函数:
代码:

#include<stdio.h>
#define Max(a,b) (a>b?a:b)
int main()
{
	printf("%d\n",Max(1,2));
}

结果:
在这里插入图片描述
我们除了可以简单的进行替换字符串的操作
我们可以
#define 宏名称(变量1,变量2,…) 表达式
定义
但是千万注意一定要在表达式两边加上括号,不然运算优先级很容易没有保障

二.inline函数(内联函数)

在C++中为了替代宏函数,我们常常使用内联函数
内联函数的好处:代替了宏,可以保证类型安全,跟宏一样也是替换
减少了调用函数时额外入参的负担

声明inline函数应该注意的地方:
inline只能在函数定义时标出
inline只能标记代码简单,少的代码(代码太长,影响text区的内存大小)
不要标记有循环,递归的函数。
不要标记构造,析构,虚函数,纯虚函数。
记住inline的本质与宏非常相似,就是替换,不过inline稍微复杂点。
inline只是一个标识,编译器可以选择无视。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值