什么是 C/C++ 中的可重入函数?


在这里,我们将了解什么是 C 或 C++ 中的可重入函数。如果在函数执行期间可以对其进行中断、然后为 ISR(中断服务例程)提供服务接着恢复任务,那么这个函数就称为可重入函数。这种类型的函数用于递归、硬件中断处理等不同的情况。

可重入函数应具备一些属性。如下列出:

  • 这种类型的函数不会使用任何全局或静态变量。虽然没有任何限制,但通常不建议这样做。这是因为中断可能会更改全局变量的值,因此从 ISR 返回后,函数可能会获取一些新值,并且结果也会有所不同。

  • 可重入函数不应修改其自身的代码。我们需要函数的操作在整个代码中保持一致。

  • 另一个属性是可重入函数不应调用任何其他不可重入函数。

示例

int x;
int my_function() {
   return x * 10;
}
int my_second_function() {
   return my_function() * 20;
}

此处这两个函数都不是可重入的。第一个函数使用了一个全局变量,因此它不是可重入的。第二个函数调用了一个不可重入的函数,所以它也不是可重入函数。

示例

int my_function(int x) {
   return x * 10;
}
int my_second_function(int x) {
   return my_function(x) * 20;
}

这两个函数现在是可重入函数了。

更新时间:2019 年 7 月 30 日

4 千次以上观看

开启您的 职业生涯

完成课程,获得认证

开始学习
广告
© . All rights reserved.