zoukankan      html  css  js  c++  java
  • 内联函数和宏

    对于内联函数:

     (1)、在C++中,以inline修饰的函数叫做内联函数,编译时C++编译器会调用内联函数的地方展开,没有函数压栈开销,内联函数提升程序运行的效率。
     (2)、内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。而宏自是一个简单的替换。
     (3)、内联函数要做参考类型检查,这是内联函数跟宏相比的优势。
      eg:#define swap(a,b){int temp=a;a=b;b=temp;}
     (4)、inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说,inline可以带来一定的效率提升,而且和C时代的宏函数相比,inline更安全可靠。可是这个是以增加空间消耗为代价。
      inline一般用于以下情况:
         1、一个函数被重复调用
         2、函数只有简单的几行,且函数不包含for while swith 语句。
      一般来说,只有在工程项目中,一个简单的函数需要被多次调用,则应该考虑inline。

    对于宏函数:
     (1)、宏在C语言里极其重要,而在C++里用得就少里。关于宏的第一规则是:绝不应该使用它,除非你不得不这样做。几乎每个宏都表明了程序设计里面的一个缺陷,因为它在编译器看到程序的正文之前重新摆布这些正文。
     (2)、宏是在代码处不加任何验证的简单替补,而内联函数是将代码直接插入调用处,而减少了普通函数调用时的资源消耗。
     (3)、宏不是函数,只是在编译前(编译预处理阶段)将程序中有关字符串替换成宏体。
     (4)、inline函数是函数,但在编译中不单独产生代码,而是将有关代码嵌入到调用处。

    inline int f(int i)
    {
        return i*i;
    }
    cout<<f(8);//调用执行cout<<8*8;

     

  • 相关阅读:
    Codeforces Round #344 (Div. 2) C. Report 其他
    Codeforces Round #344 (Div. 2) B. Print Check 水题
    Codeforces Round #344 (Div. 2) A. Interview 水题
    8VC Venture Cup 2016
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂 中二版
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂
    CDOJ 1279 班委选举 每周一题 div2 暴力
    每周算法讲堂 快速幂
    8VC Venture Cup 2016
    Educational Codeforces Round 9 F. Magic Matrix 最小生成树
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/9225865.html
Copyright © 2011-2022 走看看