zoukankan      html  css  js  c++  java
  • C++ inline关键字

    1. C的延续
         C++是一门承上启下的编程语言,没有写class他就是C语言,这也导致了很多编译器既支持C++也支持C。inline关键字其实更多地出现在C语言当中,因为很多短小的工作函数可以达到快速执行的效果。
         将函数声明为inline实际上表示编译器会将inline函数粘贴到调用点处,省去了原本函数查找、调用的时间
    2. inline使用原则
         要定义一个函数为inline函数,需要满足以下原则:
                1)不可包含复杂的结构控制语句,包括循环控制和复杂的条件控制,例如while, switch。
                2)不可包含递归函数
         inline函数使用无非是平衡“ 函数调用开销 vs  函数执行开销”,所以一个简小的函数要重复调用时,inline函数有一定优势。例如下面的call( )函数。
    #include <iostream>
    using namespace std;
    inline int call( ){
        static int ctr =1;
        return ctr++;    
    }
    int main(){
        for(int i=0; i<500; i++)
            cout<<call()<<" "<<endl;
    }
         执行过程中将call( )函数粘贴到int main()函数中的调用点“ cout<<call( )<<" "<<endl ”处。
        很多人可能有疑问,在PC上没有感觉明显速度优势。但是在很多处理器功能很弱的8位、16位的嵌入式系统中,inline函数可以节约非常客观的时间消耗。
    3. inline函数定义在头文件
         这不是绝对的,如果很多.cpp都需要这个inline函数,那么理应定义在.h中,方便函数引用、拓展。试想,你也不情愿每个函数文件中都用外部函数调用来解决
    extern inline int call( );
         不同的是,.h中的普通函数只要函数声明即可。对应到Java,可以理解为Java中的抽象方法。如声明头文件Test.h:
    #ifndef TEST_H_
    #define TEST_H_
    bool sort_elem(int &elem);
    inline int call( ){
        static int ctr =1;
        return ctr++;    
    }
    #endif /* TEST_H_ */
         inline函数不仅仅要声明,还需要定义。这样才容易被多个文件存取。
    ————————————————
    版权声明:本文为CSDN博主「光膀走天涯」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zxy1198186906/article/details/82151032
  • 相关阅读:
    初学JS——利用JS制作的别踩白块儿(街机模式) 小游戏
    对于大数据量的Json解析
    Json数据中的特殊字符处理
    移动端总结和手机兼容问题
    在DW 5.5+PhoneGap+Jquery Mobile下搭建移动开发环境
    HTML5所有标签汇总
    二叉树
    二分查找
    归并排序
    希尔排序
  • 原文地址:https://www.cnblogs.com/mfryf/p/11697020.html
Copyright © 2011-2022 走看看