C++的内联函数

内联函数是一种特殊的函数,具有函数的普通特征(参数检查,返回类型等)

 

要使用内联函数,必须采取以下措施之一:

1、在函数声明前加上关键字 inline

2、在函数定义前加上关键字 inline

 

内联函数的限制:

       不能对函数进行取址操作、内联函数不能递归

 

内联函数和普通函数的区别:

        1、内联函数和常规函数的区别不在于编写方式(除了要多使用一个关键字进行区分),而在与C++编译器将他们组合到程序中的方式。

         2、内联函数在最终生成的代码中时没有定义的,在使用时,编译器直接将函数体插入到函数调用的地方,没有普通函数调用时的额外开销(压栈,跳转,返回)

        3、内联函数相对于普通函数的优势只是省去了调用函数时候的开销。因此,当函数体执行的开销远大于调用的开销时,内联函数将无意义。(比如,一个有100行代码的函数体,在程序中总共调用了20次。使用内联函数的话,执行时就需要将100行代码复制20遍,很明显这样做是没有意义的)

 

内联函数和宏代码片段的区别:

        内联函数由编译器处理,直接将编译后的函数体插入到调用的地方。(宏代码片段由预处理器处理,进行简单的文本替换,没有任何编译过程) 

 

        内联函数最终只是给编译器的一个请求,编译器可以拒绝内联请求,具体的情况会因为编译器的编译规则不同而略有差异。但是,现在编译器已经越来越智能,很多编译器都会有自己的编译优化规则(也可能没有自动优化),这个自动优化不会影响程序运行的结果,所以内联函数的使用视具体的情况而定。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值