内联函数

内联函数产生的原因

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

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

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

posted @ 2020-04-19 10:38  不二良  阅读(184)  评论(0编辑  收藏  举报