C Primer Plus学习 五十四 内联函数

       通常函数调用需要一定的时间开销。这意味着执行调用时花费了时间用于建立调用、传递参数、跳 转到函数代码段并返回。使用类函数宏的一个原因就是可减少执行时间。C99还提供另一方法:内联函 数(inline function)。C99标准这样叙述:“把函数变为内联函数将建议编译器尽可能快速地调用该函 数。上述建议的效果由实现来定义”。因此,使函数变为内联函数可能会简化函数的调用机制,但也可 能不起作用。
       创建内联函数的方法是在函数声明中使用函数说明符inline。通常,首次使用内联函数前在文件中对 该函数进行定义。因此,该定义也作为函数原型。也就是说,代码应像下面这样:
#include <stdio.h>
inJine void eatiine () //内联函数的定义/原型 {
while (getchar () != '\n.) continue:
}
int main ()
{
eatline (); //函数调用

编译器看到内联声明后会用eatline ()函数体代替函数调用,其效果如同您在此处键入了函数体的代码:

#inciude <stdio.h>

inline void eatline ( ) //内联函数的声明/原型

{

while (getchar ( ) ! = ' \n') continue:

}

i nt. main ()

{

while (gctchar () != .\n.) // 替换 / 函数调用 continue;

        因为内联函数没有预留给它的单独代码块,所以无法获得内联函数的地址(实际上,可以获得地址, 似这样会使编译器产生非内联函数)。另外,内联函数不会在调试器中显示。
       内联函数应该比较短小。对于很长的函数,调用函数的时间少于执行函数主体的时间;此时,使用内 联函数不会节省多少时间。
       编译器在优化内联函数时,必须知道函数定义的内容。这意味着内联函数的定义和对该函数的调用必 须在同一文件中。正因为这样,内联函数通常具有内部链接。因此,在多文件程序中,每个调用内联函数 的文件都要对该函数进行定义。达到这个目标的最简单方法为:在头文件中定义内联函数,并在使用该函 数的文件中包含该头文件。一般不在头文件中放置可执行代码,但内联函数是个例外。因为内联函数具W 内部链接,所以在多个文件中定义同一内联函数不会产生什么问题。
       C提供了几种方法用于在多文件程序中使用内联函数。通常,C只允许对函数进行惟一的一次定义, 但是对内联函数却放松了这个限制。因此,最简单的方法是在使用内联函数的文件中都定义该函数。要达 到这个目标的简易方式为:在头文件中定义内联函数,并在使用该函数的源代码文件中包含该头文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值