【C语言】内联函数的应用

在C语言中,如果要实现一个功能,一般我们优先考虑是编写一个函数去实现它,但是如果这个功能相对简单,我们也许会考虑用类宏函数(宏定义)来做,毕竟相对于函数,宏定义没有建立调用,传参,地址跳转等相对繁杂的过程,但是如果有参数传递的话,在用宏的时候是没有办法检查参数合理性的,在C99以后,C语言提供了一个新的选择——内联函数。
先来介绍一下内联函数,标准规定,函数的调用和定义必须在同一个文件中,且具有内部链接属性的函数可以成为内联函数。所以简单的定义:

inline static void function()
{
	while(getchar()!=’\n’)
}

这个例子是书上的,将就拿来用用,总之,static保证了函数的链接属性为内部链接,所以一般看到使用的内联函数都是带着inline和static进行修饰的。
应用场景:
在嵌入式中开发中,其实挺常见的,不知道大家关注过没有,STM32的LL库大量使用了内联函数,还有TI的库函数中也是一样,以下是ST的LL库中内联函数实例:
在这里插入图片描述

且内联函数通常都定义在头文件中,这又是为什么呢?
因为内联函数的内部链接属性(static),如果程序想在多个文件中使用到该内联函数,那么这些文件就必须都包含该函数的定义,所以一般都将内联函数放到头文件中,在使用该内联函数的文件中包含该头文件即可。
不过看起来内联函数算是个特例,除了内联函数,不建议将其他的static函数或变量定义在头文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值