ART中的内联函数笔记

内联函数是C++中一种优化手段,用于替代宏定义以避免宏的副作用,同时减少函数调用开销。内联不是强制的,而是编译器根据情况决定是否采用。内联函数在代码中展开,不产生函数调用的额外开销,但无法被hook。若要确保内联,可以使用ALWAYS_INLINE。尽管内联和宏类似,但宏是在预处理阶段进行文本替换,而内联经过编译。内联函数的优化效果依赖于编译器决策,且可能导致代码膨胀。
摘要由CSDN通过智能技术生成

inline用来定义一个类的内联函数,用它来替代C中表达式形式的宏定义,而且消除宏定义缺点。可以解决一些频繁调用的函数大量消耗栈空间问题。它是一种实现关键字,就是在函数实现的地方加上inline关键字才有用,在声明的地方加没有用。

同时它只是一种建议,编译器可以忽略这个建议。因此Inline不一定就会被编译器内联编译。保证内联函数的定义被编译器看到的话,使用 ALWAYS_INLINE。

内联函数在编译器最终生成的代码中是没有定义的,这个函数是不存在的,也就无法实现对内联函数的hook;

内联函数没有普通函数调用时的额外开销(压栈,跳转,返回等);

内联函数是一种特殊的函数,在源码中具有普通函数的特征;

内联函数是对编译器的一种请求.因此,编译器有可能拒绝这种请求;内联函数由编译器处理,直接将编译后的函数体插入调用的地方。

内联和宏的效果很像,但是宏代码是由预处理器处理,进行简单的文本替换,没有任何编译过程.

如何hook 编译之后的内联函数?

进入该内联函数源码复写一份同样的代码,但是定义为普通函数,编译源码之后即可hook

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值