什么是 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;
}这两个函数现在是可重入函数了。
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP