第一章:Cpp内联函数—5

目录

一、复习宏函数:

1.宏函数的优点:

2.宏函数的缺点:

二、内联函数的诞生:

1.什么是内联函数?

2.如何定义内联函数?

3.内联函数的优点:

4.内联函数的特性:

5.需要注意的点:


一、复习宏函数:

在了解内联函数前,首先回顾一下宏函数。

以下是一个简单的两个数相加的宏函数:

宏函数有许多优点,最主要的是使用空间换时间,提高了性能,但是会增加代码体积。

1.宏函数的优点:

1.无需建立栈帧,会在调用的地方直接展开,属于空间换时间。

2.增强了代码的复用性

3.可以不指定参数类型

2.宏函数的缺点:

一个正确的宏函数,每个参数都要使用圆括号包裹,而且要将函数体使用一个圆括号包裹。

不能指定参数的类型。

不能在结尾加分号。

不能调试,没有对参数类型的检查。

二、内联函数的诞生:

内联函数出现在cpp中,可以看作是对宏函数的优化。

1.什么是内联函数?

内联函数,功能上类似宏函数,都会在调用处展开,而不是建立栈帧空间。书写上和普通函数相同,只在开头加上关键字inline。

2.如何定义内联函数?

内联函数的创建十分简单,只需在普通函数的返回类型前加上inline即可,以下是一个简单的内联函数。

3.内联函数的优点:

内联函数具有宏函数的所有优点,而且写起来更容易,没有宏函数那么多要注意的点,只需在常规函数之前加上inline关键字即可。

4.内联函数的特性:

1.内联函数属于一种空间换时间的做法。但是当一个内联函数的函数体过大,而且在主函数中多次调用,被多次展开,就会导致生成的可执行文件过大。造成代码膨胀。

因此,内联函数属于是对编译器的建议,即使为函数加上inline,编译器也会自己酌情考虑要不要当作内联函数使用。

一般情况下,不超过10行的短小函数,才有可能被编译器准许为内联函数。

2.内联函数的声明和定义不能分离。

因为内联函数被调用后直接在调用处展开,因此,在汇编阶段生成符号表时,编译器不会为内联函数生成符号和地址。

如果在其他文件调用内联函数,因为不能够在符号表找到内联函数的符号,编译器会报错。

5.需要注意的点:

如果要调试内联函数,需要在debug模式下;

在release模式下,编译器会优化代码,无法调试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S+叮当猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值