在C/C++中的inline介绍和用法

在C/C++中的inline,使用在函数声明处,表示程序员请求编译器在此函数的被调用处将此函数实现插入,而不是像普通函数那样生成调用代码(申请是否有效取决于编译器)。一般来说,这样做的优点是省掉了调用函数的开销,缺点是可能会增加所生成目标代码的尺寸。

1、inline和带参宏定义的比较:具有一定的优点,比如:参数类型的检查、可以使用return返回、便于调试

2、不同编译器下的inline关键字

c99标准:
inline:用于同一文件内部被调用处展开,对外部文件来说不可用;
static inline:用于在同一文件内部被调用,一般情况下,编译器并不会为此函数生成单独的目标代码;如遇到内联函数无法展开,或内联函数以地址形式被调用,则编译器将会为此内联函数生成单独的代码。
gcc:
inline:对于同一个文件,函数将会在被调处展开;对外部文件,此函数等同于“extern”函数
static inline:与c99一样
external inline:仅用于同一文件内部,在被调用处展开。

一般滴,内联函数不能是递归函数或调用递归函数。
inline应当是用于函数声明而非函数实现。但由于不同的编译器下inline关键字所修饰函数的调用范围不一致,因此,可以将inline函数的声明和实现合一,如果确定该函数仅应用于一个文件,则将其声明和实现在.c/.cpp中;否则将其放在.h中,这样,包含了此头文件的任何文件都能使用它。

 __inline 的用法

(1) inline定义的类的内联函数,函数的代码被放入符号表,在使用时直接进行替换(像宏一样展开),没有调用的开销,效率也很高。
(2)类的内联函数是一个真正的函数,编译器在调用一个内联函数时,会首先检查它的参数的类型,保证调用正确。消除了#define的隐患和局限性。
(3)inline可以作为某个类的成员函数,当然就可以在其中使用所在类的保护成员及私有成员。

何时使用inline函数:
首先,可以使用inline函数完全取代表达式形式的宏定义;

另外,要注意内联函数一般只用在函数内容非常简单的时候,这是因为,内联函数的代码会在任何调用它的地方展开,如果函数太复杂,代码膨胀带来的恶果很可能会大于效率的提高带来的益处。内联函数最重要的使用地方在于类的存取函数。


观点来自网络和项目实践中


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值