美文网首页
05-内联函数

05-内联函数

作者: _东阁堂主_ | 来源:发表于2019-02-06 09:52 被阅读0次

写在前面

接下来又要学一个关键字了--inline
使用inline修饰函数的声明或者实现,可以使其变成内联函数
建议声明和实现都增加inline修饰

名词解释

特点:
编译器会将函数调用直接展开为函数体代码 
可以减少函数调用的开销 
会增大代码体积
内联函数和普通函数的区别在于:当编译器处理调用内联函数的语句时,
不会将该语句编译成函数调用的指令,而是直接将整个函数体的代码插人调用语句处,(这尼玛又逼着我学汇编,还好大学时学过😏)
就像整个函数体在调用处被重写了一遍一样

码上封口

将main.m 改为mian.mm 文件
#include <iostream>
using namespace std;

//声明内联函数
inline int sum(int a, int b);

int main() {
    
    cout << "sum的和是:"<< sum(10, 20) << endl;
}

//内联函数的实现
inline int sum(int a, int b) {
    return a + b;
}

码来补充

◼ 内联函数和宏,都可以减少函数调用的开销 
◼ 对比宏,内联函数多了语法检测和函数特性
◼ 思考以下代码的区别 #define sum(x) (x + x)
inline int sum(int x) { return x + x; } 
int a = 10; sum(a++);

装逼一下

函数调用在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参的值复制给形参,
接下来还要将函数的返回地址(该地址指明了函数执行结束后,程序应该回到哪里继续执行)放入栈中,
最后才跳转到函数内部执行。这个过程是要耗费时间的。

另外,函数执行 return 语句返回时,需要从栈中回收形参和局部变量占用的存储空间
,然后从栈中取出返回地址,再跳转到该地址继续执行,这个过程也要耗费时间。


一般情况下,这个开销可以忽略不计。但是,如果一个函数内部没有几条语句,执行时间本来就非常短,
那么这个函数调用产生的额外开销和函数本身执行的时间相比,就显得不能忽略了。假如这样的函数在一个循环中被上千万次地执行,
函数调用导致的时间开销可能就会使得程序运行明显变慢。

作为特别注重程序执行效率,适合编写底层系统软件的高级程序设计语言
,C++ 用 inline 关键字较好地解决了函数调用开销的问题。

完整代码demo,请移步GitHub:DDGLearningCpp

当然C++大神就绕吧,非喜勿喷,毕竟这是个人的学习笔记📒

相关文章

  • 05-内联函数

    写在前面 名词解释 码上封口 码来补充 装逼一下 完整代码demo,请移步GitHub:DDGLearningCp...

  • C++第二弹---函数

    内联函数 内联函数的定义内联函数也叫内嵌函数,他主要是解决程序运行效率。当内联函数收到编译器的指示时,即可发生内联...

  • 内联函数

    内联函数 整理自内联函数百度百科 内联函数是指用inline修饰的函数(并不是所有用inline修饰的函数都是内联...

  • 《C++ Primer Plus》:函数探幽

    本章内容概览 内联函数 引用变量 按引用传递函数参数 默认参数 函数重载 函数模板 内联函数 内联函数是C++为提...

  • Kotlin系列之let、with、run、apply、also

    目录: 一、回调函数的Kotin的lambda的简化二、内联扩展函数之let三、内联函数之with四、内联扩展函数...

  • C++基础-(函数)

    C++基础 函数 内联函数 内联函数非常短的函数适合于内联函数体会到插入到发生函数调用的地方普通函数调用多次也只有...

  • C++——内联函数、函数重载、函数缺省参数

    内联函数 使用inline关键字将函数变为内联函数,函数内联是为了降低函数调用时占用的多余时间,多余时间的产生在,...

  • C++——内联函数、函数重载、函数缺省参数

    内联函数 使用inline关键字将函数变为内联函数,函数内联是为了降低函数调用时占用的多余时间,多余时间的产生在,...

  • 内联函数

    内联函数 在类中定义的函数,但是实现却在类外面。并且在函数前加了 inline 就是内联函数,内联函数效率一般比较...

  • C++内联函数与C语言函数宏

    C++内联函数 什么是内联函数? 在函数的声明和定义前加一个 inline 关键字,这个函数就是内联函数。 通常会...

网友评论

      本文标题:05-内联函数

      本文链接:https://www.haomeiwen.com/subject/dhidsqtx.html