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,并且内联函数本身不能是直接递归函数(自己内部还调用自己的函数)。

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

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

  • 相关阅读:
    ios xib或storyBoard的那些小方法
    ios pod库更新到1.0或1.0.1之正确修改podfile文件
    ios UILabel在storyBoard或xib中如何在每行文字不显示完就换行
    ios NSThred多线程简单使用
    Xcode升级插件失效,与添加插件不小心点击Skip Bundle解决办法
    ios app打ipa包
    极光推送碰到的问题
    ios 更新约束
    ios 缺少合规证明
    Path Sum II
  • 原文地址:https://www.cnblogs.com/Sunqingyi/p/12730478.html
Copyright © 2011-2022 走看看