zoukankan      html  css  js  c++  java
  • C++ inline

    C++ inline函数

    1 int big(int a, int b) {
    2     return a > b ? a : b;
    3 }


    上面是求两个数中较大者的函数,当然我们可以在任意使用big(a, b)的位置用如下这句话代替:(a > b ? a : b).

    把这种小操作定义为函数的优缺点如下:
    优点:
    1. 阅读和理解函数的调用比读懂等价的表达式容易。
    2. 使用函数可以确保行为的统一,每次相关操作都能保证按照同样的方式进行。
    3. 修改函数比修改所有位置的等价表达式更容易。
    4. 函数可以被其他应用重复利用,省去了编码的代价。
    缺点:
    1. 调用函数比求等价的表达式慢。
    函数调用包含一系列工作:调用前要先保存寄存器,并在返回时恢复;可能需要拷贝实参;程序转向一个新的位置继续执行。

    内联函数可避免函数调用的开销
    将函数指定为内联,通常就是将它在每个调用“内联地”展开。假设吧big函数定
    义为inline,则如下调用
    cout << big(a, b) << endl;
    在编译过程中展开成类似于下面的形式
    cout << (a > b ? a : b) << endl;

    1、内联函数对于编译器来说只是一个建议,编译器可以选择忽略这个建议。
    2、内联函数应该在头文件中定义,这一点不同于其他函数。
    3、在头文件中加入或者修改内联函数时,使用了该头文件的所有源文件都必须重新编译。
    4、内联函数的定义对编译器而言必须是可见的,以便编译器能够在调用点内联展开该函数的代码。
    5、为了使得inline声明内联函数有效,我们必须将inline关键字与函数体放在一起才行,否则inline关键字是不能成功将函数声明内联函数的。

    更多:https://zh.wikipedia.org/wiki/%E5%86%85%E8%81%94%E5%87%BD%E6%95%B0

  • 相关阅读:
    django2.0+连接mysql数据库迁移时候报错
    微信小程序路由跳转
    洛谷P3144 [USACO16OPEN]关闭农场Closing the Farm
    洛谷P3143 [USACO16OPEN]钻石收藏家Diamond Collector
    洛谷P2677 超级书架 2
    洛谷P2676 超级书架
    洛谷P3146 [USACO16OPEN]248
    洛谷P1396 营救
    洛谷P1772 [ZJOI2006]物流运输
    P3102 [USACO14FEB]秘密代码Secret Code
  • 原文地址:https://www.cnblogs.com/ykzou/p/4982486.html
Copyright © 2011-2022 走看看