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

    内联函数产生的原因

    C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。

    为了解决这个问题,特别的引入了inline修饰符,表示为内联函数。

    使用内联函数的好处

    #include <stdio.h>  
     
    //函数定义为inline即:内联函数  
    inline char* dbtest(int a) 
    {  
        return (i % 2 > 0) ? "" : "";  
    }   
      
    int main()  
    {  
        int i = 0;  
        for (i=1; i < 100; i++) 
        {  
            printf("i:%d    奇偶性:%s /n", i, dbtest(i));      
        }  
    } 

    使用inline修饰带来的好处我们表面看不出来,其实在内部的工作就是在每个for循环的内部任何调用dbtest(i)的地方都换成了(i%2>0)?"奇":"偶"这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。

    内联函数注意事项

    关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。

     inline只适合涵数体内代码简单的函数数使用,不能包含复杂的结构控制语句例如while、switch,并且内联函数本身不能是直接递归函数(自己内部还调用自己的函数)。

    如果执行函数体内代码的时间,相比于函数调用的开销较大,那么内联函数效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。

    最好把内联函数的定义放在头文件中

  • 相关阅读:
    python 实现单链表
    java解压缩zip
    关于 ElesticSearch 安装
    spring boot 与 spring cloud 关系
    Java并发编程:深入剖析ThreadLocal
    mybatis like 的坑
    JMeter 压力测试使用CSV参数
    IntelliJ IDEA创建多模块依赖项目
    关于IntelliJ IDEA删除项目
    switchhost -- 切换host的工具
  • 原文地址:https://www.cnblogs.com/Sunqingyi/p/12730478.html
Copyright © 2011-2022 走看看