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;

     

  • 相关阅读:
    net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.util.Map
    oracle 导入excel
    【长文干货】浅析分布式系统
    35 个 Java 代码性能优化总结
    阿里巴巴Java开发手册-命名规约
    阿里巴巴Java开发手册-集合处理
    阿里巴巴Java开发手册-并发处理
    [NOI2016]国王饮水记
    python学习(二十一) Python 中的链式赋值
    python学习(二十) Python 中的比较:is 与 ==
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/9225865.html
Copyright © 2011-2022 走看看