• inline(内联函数)


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

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

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

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

    {

      float tmp=*p1;

      *p1=*p2;

      *p2=tmp;

    }

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

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

  • 相关阅读:
    AntItemInventoryScene道具栏列表显示
    AntItemBaseScene的功能分析
    杀掉一直处于 正在终止 状态的并发请求
    oracle文件版本
    某个系统配置文件 用户层的SQL
    系统配置SQL profile
    (转)oracle 查看表所占用的空间大小
    Workflow Mailer Notifications设置
    System Hold, Fix Manager before resetting counters
    Linux mail 命令参数
  • 原文地址:https://www.cnblogs.com/prayer521/p/5754735.html
Copyright © 2020-2023  润新知