inline函数的小概括

今天看了一下内联函数,对此进行一个概括和总结。

1.内联函数:

在函数的调用点,把函数的代码全部展开。发生在编译阶段。

而宏是发生在预处理阶段,进行字符串的替换。

相比而言,内联函数是一种更安全的宏。因为内联函数会进行类型检查,而且在编译阶段执行。

2.内联函数的条件:

规模较小

流程直接

调用频繁

3.将规模较小的操作定义成函数的好处:

1>.阅读和理解函数的调用要比读懂等价表达式要容易得多;

2>.使用函数可以确保行为的统一,每次操作都按相同的方式进行;

3>.修改函数功能,可以做到一改全改;

4>.函数可以被重复调用或被引入其他工程,达到代码复用;

4.内联函数的作用域:

本文件内可见。

5.内联函数和普通函数的区别?

1>.内联函数没有标准的函数栈帧的开辟与回退。

2>.内联函数用函数名调用函数,普通函数用函数指针调用函数。

6.内联函数与static函数的区别是什么?

栈帧的开辟,内联函数不产生符号,而普通函数和static函数都会产生符号!

static函数产生符号,并且都是local,普通函数产生的符号都是globle.

链接器只处理globle符号,不处理local符号。

7.处理globle符号时,都需要处理什么?

首先进行符号解析,然后分配内存地址,最后进行符号的重定位!

8.写代码时有两个版本:

Debug版本:调试(插入调试信息,行号呀等等),不存在代码优化,运行速度更快,内存节省。

Release版本:发布(存储运行方面的信息),代码会进行优化。

inline函数主要在Release版本起作用。

Debug版本里,inline函数的调用也需要栈帧的开辟与回退,方便调试。

9.inline函数只是对编译器的一个建议,能不能处理主要还是由编译器决定,编译器也可以对此进行忽略。

10.递归的函数不可能成为内联函数!简单的函数进行内联。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值