和宏定义(#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处理阶段编译阶段预处理阶段类型检查✅ 有❌ 无参数求值只求值一次可能多次求值调试✅ 可调试❌ 不可调试副作用风险低高作用域遵循语言作用域全局生效是否生成函数符号不一定否四、inline与static inline的区别(1)inlineinline int add(int a, int b) { return a b; }特点项目说明是否有函数本体❌ 不强制是否允许多次定义✅ 允许ODR-like外部可见性✅ 可能被外部引用常见错误multiple definition重复定义(2)static inlinestatic inline int add(int a, int b) { return a b; }特点项目说明是否有函数本体✅ 每个翻译单元都有是否允许多次定义✅ 允许外部可见性❌ 仅当前文件可见(3) 综合对比特性inlinestatic inline链接属性外部链接内部链接是否适合放头文件❌ 不推荐✅ 推荐重复定义风险高无代码膨胀风险中稍高使用频率少极高