C++基础-inline内联函数
/*
inline内联函数 和 普通函数区别
inline内联函数:
在编译过程中,就没有函数的调用开销了,
在函数的调用点直接把函数的代码进行展开处理了
inline只是建议编译器把这个函数处理成内联函数
但不是所有inline都会被编译器处理成内联函数 - 递归
如果代码量非常的大也不会展开处理
inline函数不再生成相应的函数符号
debug版本 inline不起作用,只在release才能出现
*/
//多次函数调用开销 可能会远远大于函数本身的指令执行时间
//此时可使用内联函数
inline int sum(int a=10, int b=20)
{
return a+b;
}
int main(int argc, char const *argv[])
{
int a = 10;
int b = 20;
int ret = sum(a,b); // 等同于a + b;
//标准函数的调用过程:参数压栈、函数栈帧的开辟和回退过程
//调用函数 x+y: mov -> add -> mov
return 0;
}
总结:
- inline内联函数在编译过程中,没有普通函数的调用开销,在函数的调用点直接把函数的代码进行展开处理了
- inline只是建议编译器把该函数处理成内联函数,但不是所有inline都会被编译器处理成内联函数(例如递归);如果代码量非常的大也不会展开处理。
- inline函数不再生成相应的函数符号(*.o sum_int_int .text)
- debug版本 inline不起作用,只在release才能出现
本文作者:JoeのBLOG
本文链接:https://www.cnblogs.com/anqwjoe/p/16473607.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步