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

【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 比宏更安全,推荐使用
http://www.xdnf.cn/news/4078.html

相关文章:

  • 第六章:6.1 ESP32教学:多任务处理与FreeRTOS实战
  • 谷歌SMR测试环境搭建
  • Spring 框架中 @Configuration 注解详解
  • Springboot循环依赖
  • FOC算法开环控制基础
  • Java开发者面试实录:微服务架构与Spring Cloud的应用
  • 学习黑客Nmap 原理
  • 什么是外联模板(extern template)?
  • 【阿里云大模型高级工程师ACP学习笔记】2.9 大模型应用生产实践 (下篇)
  • C++竞赛指南
  • 搜索速度迅猛,能在0.001秒内迅速找到文件,但遗憾的是,该软件已经停止更新
  • 前端- ElementPlus入门
  • yolov11 epoch100轮 训练笔记5 kaggle comet
  • Android学习总结之GetX库篇(优缺点)
  • 进程的程序替换——exec系列函数的使用
  • 效整理文件信息!一键生成文件夹目录的工具
  • 8.渐入佳境 -- 域名及网络地址
  • Unity:Surface Effector 2D(表面效应器 2D)
  • OSE2.【Linux】练习:查找项目的main函数入口
  • 开元类双端互动组件部署实战全流程教程(第3部分:UI资源加载机制与界面逻辑全面解析
  • 事务隔离(MySQL)
  • FTP(文件传输协议)
  • 15.日志分析入门
  • LeetCode算法题 (反转链表)Day17!!!C/C++
  • Cookie与Session
  • JookDB:一款国产的通用数据库开发工具
  • 期末代码Python
  • 【数据结构】第八章:排序
  • 【言语理解】片段阅读之标题拟定(5)
  • ABC 404