C语言inline函数说明

一句话总结:inline函数的定义(而不是申明)一般必须在头文件或本C文件内使用之前。

inline是一种“用于实现的关键字”,而不是一种“用于声明的关键字”。关键字inline必须与函数实现放在一起才能使函数成为内联,仅将inline放在函数声明前面不起任何作用。

如果内联函数在调用之后才定义,则编译器不会进行函数体替换,只会作为一个普通的函数调用。所以如果在C文件中定义,必须先定义后使用,才有意义。

inline函数必须在调用该函数的每个文本文件中定义。因为编译器在编译期间进行inline化,为了用被调用函数的函数体替换一个函数调用,编译器必须知道函数的具体实现,以便它能够在调用点内展开该函数。

对于同一工程的不同文件,如果inline函数出现的话,其定义必须相同。为避免在多个文件中多次重复定义inline函数,一般将inline函数定义在.h文件中,通过文件包含的方式被其他多个文件引用。注意,此时inline函数必须定义为static,否则会报重复定义错误,因为普通函数会在被调用的函数有内存拷贝,而static函数的作用域仅限定义的源文件内部。

inline对于编译器来说只是一个建议,编译器可以选择忽略该建议。正常情况下,编译器会自动进行优化。但是当inline中出现了递归、循环或过多代码时,编译器自动无视inline关键字,同样作为普通函数调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值