zoukankan      html  css  js  c++  java
  • inline(内联函数)

    一般来说,调用函数会造成:目前的指令位置被存储下来,程序流跳转到所调用的函数,然后执行调用函数,最后跳转回之前存储的位置。对于需要常常调用的小函数来说,这会影响程序的运行效率。所以,c99新增了inline函数。inline关键字告诉编译器,任何地方只要调用此函数,就直接把此函数的机器码插入到调用的地方,这样程序执行更有效率,就好像将这些源代码直接贴在源代码文件中调用函数的地方。

    内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。这样就节省了参数传递、控制转移等开销。

    如下:swapf()被定义为inline函数,用来交换两个浮点变量的值。

    inline void swapf(float *p1,float *p2)

    {

      float tmp=*p1;

      *p1=*p2;

      *p2=tmp;

    }

    一般来说,不应该把将“包含循环”的函数定义成inline函数。

      需要注意的是,inline关键字只是表示一个要求,编译器并不承诺将inline修饰的函数作为内联。而在现代编译器中,没有用inline修饰的函数也可能被编译为内联,通常内联函数应该是比较简单的函数,结构简单语句少,又频繁使用。如果将一个复杂的函数定义为内联函数,反而会造成代码膨胀增大开销。在这种情况下,编译器都会将其自动转换为普通函数来处理。

  • 相关阅读:
    在Spring Boot中使用内存数据库
    在Spring Boot使用H2内存数据库
    Spring Boot中Spring data注解的使用
    Spring Boot JPA中java 8 的应用
    数字签名
    Java NIO系列教程(七) FileChannel
    Java NIO系列教程(六) Selector
    Java NIO系列教程(五) 通道之间的数据传输
    Java NIO系列教程(四) Scatter/Gather
    Java NIO系列教程(三) Buffer
  • 原文地址:https://www.cnblogs.com/prayer521/p/5754735.html
Copyright © 2011-2022 走看看