什么是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;
}

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