通常函数调用需要一定的时间开销。这意味着执行调用时需要花费时间用于建立调用、传递参数,跳转到函数代码段并返回。
我们知道使用类函数宏的一个原因就是可减少执行时间。
C99提供另一方法:内联函( nline function)。C99标准这样叙述:“把函数变为内联函数将建议编译器尽可能快速地调用该函数,上述建议的效果由实现来定义”。因此,使函数变为内联函数可能会简化函数的调用机制,但也有可能不起作用。
创建内联函数的方法是在函数声明中使用函数说明符 inline。通常,首次使用内联函数前在文件中对该函数进行定义。因此,该定义也作为函数原型。也就是说,代码应像下面这样:
编译器看到内联声明后会用 eatline()函数体代替函数调用,其效果如同您在此处键入了函数体的代码:
看一个直观简单的内联函数的例子:
这是标准的内联函数的用法,在每个for循环的内部任何调用dbtest(i)的地方都换成了(i%2>0)?"奇":"偶"这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。
内联函数的特点: