C/C++ 内联函数

前言

很长时间没有动过博客了,忽然回来是因为自己觉得作为刚入门的大一学生,经典书籍C Primer Plus和C++ Primer等确实在抱着极高的热情在阅读,阅读速度很快,但是可能相应的理解并没有完全透彻,因此觉得还是有必要来写下博客对知识点进行一些梳理。所以就开始认真地记下我的第一篇博客吧( •̀ ω •́ )✧

何为内联函数及为何使用

将函数指定为内联函数,通常也就是将它在每个调用点上内联地展开,使编译器用内联代码替换函数调用,并可能执行一些其他的优化。
例如:

inline static void eatline();	//内联函数定义/原型 
{
	while (getchar()!='\n')
		continue;
}

int main()
{
	eatline();	//编译器会用函数体中的代码替换eatline()的调用
}
//即主函数相当于
int main()
{
	while (getchar()!='\n')
		continue;
}

因为编译器在使用函数时并非调用,而是直接将函数体的代码展开在调用点上,所以避免了函数调用时的例如建立调用、传递参数、跳转到函数代码等一系列开销,提高了程序运行效率

 

使用时的注意点

  • 内联函数通常放在头文件内。内联函数是一个将可执行代码置于头文件中的特例。

  • 标准规定具有内部链接的函数可以成为内联函数。

  • 与C++不同的是,C还允许混合使用内联函数定义和外部函数定义(具有外部链接的函数定义)

    例如

    inline double square(double x) {return (int) (x*x+0.5);}	//无static
    void masp(double w)
    {
    		double kw=square(w);
    }
    

    此例中,编译器实际上既可以使用该文件中square()函数的内联定义,也可以使用另一文件中的外部链接定义。即被视为可替换的外部定义

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值