【嵌入式必知】内联函数(inline)和宏定义(#defne)
2026/6/9 19:13:25 网站建设 项目流程

一、 什么是内联函数

内联函数是 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

链接属性

外部链接

内部链接

是否适合放头文件

❌ 不推荐

✅ 推荐

重复定义风险

代码膨胀风险

稍高

使用频率

极高

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询