inline(内联)函数

关于内联函数的几点:

1.  对于那些函数体代码量很小,又经常调用的函数,一般用作内联函数。因为函数体代码很小,函数体执行的时间远小于调用函数的时间,从而提高代码执行效率。

2. 一般建议少用宏定义,改用内联函数。因为宏定义容易出错(如边界错误),而且宏定义只是编译时简单的替换,而内联函数含有类型安全检查和自动类型转换,这些是宏定义没有的。宏定义还有另一个缺点:无法操作类的私有数据成员。

3. 内联支持调试,宏定义不支持调试(assert除外)。宏定义只是简单的替换,内联在debug时相当于普通函数,此时并没有真正的内联,可以参与调试,在release时,才真正内联。

4. inline关键字是“定义型关键字”,inline只有写在定义前时,才是内联函数,如果inline仅写在声明前,而定义前没有的话,不算内联。

5. 内联定义一般写在头文件中,若写在源文件中,只能给本源文件使用。若其他源文件要使用,需重写下内联函数的定义,才可使用。而且两源文件中内联函数的定义必须相同。

换一种说法内联函数应该在头文件中定义,这一点不同于其他函数。编译器在调用点内联展开函数的代码时,必须能够找到 inline 函数的定义才能将调用函数替换为函数代码,而对于在头文件中仅有函数声明是不够的。当然内联函数定义也可以放在源文件中,但此时只有定义的那个源文件可以用它,而且必须为每个源文件拷贝一份定义(即每个源文件里的定义必须

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值