[MCU开发工具资源区] 内联函数

[复制链接]
 楼主| LOVEEVER 发表于 2024-3-6 08:00 | 显示全部楼层 |阅读模式

内联函数禁用所有的编译选项。使用__inline修饰函数导致函数在调用处直接替换为函数体。这样代码调用函数更快,但增加代码的大小,特别在函数本身比较大而且经常调用的情况下。

  1. __inline int square(int x) {
  2.    return x * x;
  3. }

  4. #include <MATH.H>

  5. double length(int x, int y){
  6.     return sqrt(square(x) + square(y));
  7. }

使用内联函数的好处如下:

没有函数调用负担。函数调用处直接替换为函数体,因此没有诸如读取寄存器变量等性能消耗。
更小的参数传递消耗。由于不需要拷贝变量,传递参数的消耗更小。如果参数是常量,编译器可以提供更好的优化。
内联函数的缺陷是如果调用的地方很多,代码的体积会变得很大。这主要取决于函数本身的大小和调用的次数。

仅对重要的函数使用inline是明智的。如果使用得当,内联函数甚至可以减少代码的体积:函数调用会产生一些计算机指令,但是使用内联的优化版本可能产生更少的计算机指令。

星辰大海不退缩 发表于 2024-3-11 09:33 | 显示全部楼层
没有函数调用负担。函数调用处直接替换为函数体,因此没有诸如读取寄存器变量等性能消耗。
OKAKAKO 发表于 2024-3-11 15:21 | 显示全部楼层
函数调用处直接替换为函数体,没有读取寄存器变量等性能消耗。大大提升速率
小夏天的大西瓜 发表于 2024-3-18 15:59 | 显示全部楼层
使用内联函数没有函数调用负担
小小蚂蚁举千斤 发表于 2024-3-19 17:35 | 显示全部楼层
使用__inline修饰函数导致函数在调用处直接替换为函数体。这样代码调用函数更快,但增加代码的大小,特别在函数本身比较大而且经常调用的情况下。
中国龙芯CDX 发表于 2024-3-21 15:26 | 显示全部楼层
使用__inline修饰函数导致函数在调用处直接替换为函数体。
jf101 发表于 2024-3-22 11:17 | 显示全部楼层
函数体的调用更优?
szt1993 发表于 2024-3-25 15:39 | 显示全部楼层
使用内联函数没有函数调用负担
您需要登录后才可以回帖 登录 | 注册

本版积分规则

348

主题

2625

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部