当前位置: 首页 > news >正文

【嵌入式必知】内联函数(inline)和宏定义(#defne)

一、 什么是内联函数

内联函数是 C/C++ 中的一种函数修饰符,通过在函数返回类型前加上inline关键字来指定。它的核心思想是“以空间换时间”:在编译阶段,编译器会尝试将内联函数的代码直接嵌入(展开)到每一个调用它的地方,从而省去了函数调用时的压栈、跳转和返回等开销,提高程序的执行效率。

inline int add(int a, int b) { return a + b; }

二、什么是宏定义

宏定义是 C/C++ 中的预处理指令,通过#define来实现。它在编译前的预处理阶段执行,仅仅进行纯粹的文本替换,不涉及语法分析或类型检查。宏定义分为无参宏(常用于定义常量)和带参宏(形式上类似函数,用于替换表达式)。

#define ADD(a, b) ((a) + (b))

三、内联函数和宏定义区别

对比项

内联函数(inline)

宏定义(#define)

处理阶段

编译阶段

预处理阶段

类型检查

✅ 有

❌ 无

参数求值

只求值一次

可能多次求值

调试

✅ 可调试

❌ 不可调试

副作用风险

作用域

遵循语言作用域

全局生效

是否生成函数符号

不一定

四、inlinestatic inline的区别

(1)inline

inline int add(int a, int b) { return a + b; }

特点:

项目

说明

是否有函数本体

❌ 不强制

是否允许多次定义

✅ 允许(ODR-like)

外部可见性

✅ 可能被外部引用

常见错误

multiple definition(重复定义)

(2)static inline

static inline int add(int a, int b) { return a + b; }

特点:

项目

说明

是否有函数本体

✅ 每个翻译单元都有

是否允许多次定义

✅ 允许

外部可见性

❌ 仅当前文件可见

(3) 综合对比

特性

inline

static inline

链接属性

外部链接

内部链接

是否适合放头文件

❌ 不推荐

✅ 推荐

重复定义风险

代码膨胀风险

稍高

使用频率

极高

http://www.jsqmd.com/news/982947/

相关文章:

  • 工业级齿轮缺陷YOLO数据集:500张高清图+7类标注+训练验证测试划分+可视化脚本
  • 深入解读NXP Kinetis K61芯片手册:从电气参数到稳定嵌入式设计
  • 5分钟掌握YimMenu:GTA5安全增强与防崩溃解决方案
  • 别再死记硬背了!用Python代码手把手带你玩转A*算法(附扫地机器人实战源码)
  • i.MX 6UltraLite时序参数深度解析:从手册到稳定嵌入式设计的实战指南
  • i.MX 7ULP接口时序深度解析:从理论到硬件设计与驱动配置实战
  • MC68HC908AT32时钟系统:PLL低功耗管理与滤波电容选型实战
  • 告别龟速下载!3分钟掌握百度网盘高速下载神器
  • 从PCI到PCIe 4.0:图解电脑主板接口的‘高速公路’进化史(及未来展望)
  • 如何告别复杂宏命令:魔兽世界智能宏系统终极指南
  • 企业AI算力工作站DLTM深度学习推理工作站零代码私有化重塑企业AI落地新模式
  • 嵌入式低功耗设计实战:从Kinetis K26电气特性到功耗优化策略
  • 终极无损视频修复指南:5分钟学会使用untrunc拯救损坏的MP4文件
  • 微信聊天记录备份工具:如何安全掌控你的数字记忆
  • 计算机毕业设计之 智能零售柜商品识别系统
  • Havenlon 系统术语解读:从信任到执行控制
  • 深度解析MusicFree:如何构建开源插件化音乐播放器的技术架构
  • 别再只盯着CPU了!用Node Exporter监控Linux服务器,这5个内存和磁盘IO的指标更关键
  • ARM Cortex-M4引脚复用实战:从K60配置到嵌入式系统设计
  • 更便捷地提取梅露露的炼金工房资源
  • 嵌入式接口时序设计:从i.MX 6ULZ核心外设到硬件调试实战
  • 如何快速掌握DDC/CI协议:MonitorControl跨架构显示器控制终极指南
  • BIOS更新真能救活你的高频内存条?实测微星Z690主板升级0603版BIOS后,DDR4 4000 XMP终于稳了
  • 告别Verilog代码乱糟糟:在Windows上用VSCODE一键美化格式的完整流程
  • 淘宝京东商品评论自动采集与情感倾向分析工具(含爬虫+模型+可视化界面)
  • CICERO双引擎架构:语言模型与规划器协同的AI谈判系统
  • 5分钟快速指南:用HoRNDIS实现Mac与Android的USB网络共享
  • Trelby剧本写作工具:完全免费的专业剧本创作软件终极指南
  • 麻将AI助手Akagi:实时分析雀魂对局的终极指南
  • MonitorControl终极指南:用Mac键盘控制所有显示器亮度,完全免费!