为什么 inline 函数经常使用 static 修饰

文章探讨了内联函数在嵌入式C中的行为,指出头文件中声明的inline函数在编译期可能不被内联,除非使用static修饰以确保文件作用域,防止多文件链接时的重定义错误。

内联函数探究 - noinline、always_inline,static inline,内联展开 - 嵌入式C语言自我修养 | 宅学部落

个人理解:

头文件里声明了inline的函数,编译期不一定将其内联展开,而仍将其编译为函数对象,如果不加 static 文件作用域修饰,当多个 cpp 文件都#include 该inline函数时,会在多个 cpp 文件内都定义函数对象,从而链接时报重定义错误。加上 static,即使在多个 cpp 文件内都定义该函数对象,也都是限定文件作用域的,不会产生重定义;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值