C++ 内联函数inline

inline只是一种要求,通常应该是比较简单的函数。取代C的“宏定义”。

内联函数默认是静态的(仅用于本文件)

下列3种情况编译器不会将函数处理成内联函数:
1、函数内有循环语句;
2、函数太复杂(取决于编译器);
3、程序中有取该函数地址的语句。

inline(内联)函数一般直接放到头(.h)文件中。
因为内联函数要在调用点展开,所以编译器必须随处可见内联函数的定义,要不然就成了非内联函数的调用了。
所以,这要求每个调用了内联函数的文件都出现了该内联函数的定义。

inline必须与函数定义体放在一起才能使函数成为内联,仅将inline放在声明前面不起任何作用。
所以说inline是一种“用于实现的关键字”,而不是一种“用于声明的关键字”。
一般地,用户可以阅读函数的声明,但是看不到函数的定义。
尽管在大多数教科书中内联函数的声明、定义前面都加了inline 关键字,但inline最好不出现在函数的声明中。 
eg.
如下风格的函数不能成为内联函数:

    inline void func(int x);
    void func(int x){
         //...
    } 

而如下风格的函数可以成为内联函数:

    void func(int x);
    inline void func(int x){
        //...
    }   //inline与函数定义体放在一起

百度百科:
       在计算机科学中,内联函数(有时称作在线函数编译时期展开函数)是一种编程语言结构,
用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);
也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(上下文),从而节省了每次调用函数带来的额外时间开支。
但在选择使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支。
另外还需要特别注意的是对递归函数的内联扩展可能引起部分编译器的无穷编译 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值