• 内联函数和宏


    对于内联函数:

     (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;

     

  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/9225865.html
Copyright © 2020-2023  润新知