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

【C/C++】inline关键词

C++ inline 关键字学习笔记

一、什么是 inline 函数?

inline(内联)是 C++ 中的一个关键字,表示“将函数的代码直接插入到调用点”,以减少函数调用开销,提升执行效率。

✅ 注意:inline 是一种“请求”,编译器不一定会采纳它。


二、为什么使用 inline

通常,函数调用会有如下流程:

  • 参数压栈
  • 跳转到函数地址
  • 执行函数体
  • 返回并恢复现场

这个过程有一定的性能开销。对于体积小、调用频繁的函数,可以使用 inline 来减少这些开销。


三、如何使用 inline

✅ 语法格式:

inline 返回类型 函数名(参数) {// 函数体
}

四、代码示例

🔹 示例一:普通函数

int add(int a, int b) {return a + b;
}int main() {int result = add(1, 2);  // 正常函数调用,有开销
}

🔹 示例二:inline 函数

inline int add(int a, int b) {return a + b;
}int main() {int result = add(1, 2);  // 编译器可能会将调用展开为 int result = 1 + 2;
}
  • 优势:省去了函数调用的跳转和返回,提升性能。
  • 缺点:如果函数体太大、频繁展开,会增加可执行文件体积(代码膨胀)。

五、适合使用 inline 的场景

适合用 inline 的情况不适合用 inline 的情况
函数体非常小函数体很大
调用频繁很少调用
希望去除调用开销对性能影响不大
函数定义通常写在头文件中函数定义隐藏在源文件中

六、常见应用

🔸 头文件中定义的函数默认建议加 inline

// math_utils.hpp
#pragma onceinline int square(int x) {return x * x;
}

如果你不加 inline,多处包含这个头文件时,会造成链接错误(重复定义)。


七、与宏的对比

#define ADD(a, b) ((a) + (b))     // 宏inline int add(int a, int b) {   // inline 函数return a + b;
}
  • 宏没有类型检查、可能有副作用
  • inline 函数安全、可调试、有作用域

结论:inline 更推荐使用!


八、总结

项目说明
作用减少函数调用开销,将函数体插入到调用点
使用场景函数体小、调用频繁、在头文件中定义
注意事项编译器不一定接受;不要滥用大型函数内联
替代宏inline 比宏更安全,推荐使用

相关文章:

  • 用网页显示工控仪表
  • 精益数据分析(40/126):移动应用商业模式的关键指标与盈利策略
  • 常见小模型的实现原理及使用示例:Android端
  • 黑马点评day02(缓存)
  • 常用CPU、GPU、NPU、DSP、ASIC等芯片区别介绍
  • IL2CPP 技术深度解析
  • 三星SMT贴片机选型与效能提升指南
  • 学习路线(c++)
  • 使用Mathematica绘制Sierpinski地毯
  • ZYNQ笔记(十七):IP核封装与接口定义
  • Java抽象类与接口详解
  • 关于string类的构造函数
  • 基于 jQuery 实现灵活可配置的输入框验证功能
  • 效整理文件信息!一键生成文件夹目录的工具
  • 简单理解MCP:AI如何使用工具
  • 开元类双端互动组件部署实战全流程教程(第1部分:环境与搭建)
  • 网络:cookie和session
  • 使用汇率查询API帮你实时查询汇率,促进货币交流
  • GPU性能加速的隐藏魔法:Dual-Issue Warp Schedule全解析
  • 游戏开发的TypeScript(5)TypeScript的类型转换
  • 外卖大战之外,缝隙中的校园到寝外卖和那些送餐的大学生们
  • 2年就过气!ChatGPT催生的百万年薪岗位,大厂不愿意招了
  • 黎巴嫩9年来首次举行地方选举
  • 社区来电催生?多地回应:系为居民提供卫生健康服务
  • 三大上市猪企:前瞻应对饲料原材料价格波动
  • 保险经纪公司元保在纳斯达克挂牌上市,去年净赚4.36亿元