1

我正在使用普通的旧c。

我有一个使用静态局部变量的函数,因此是不可重入的。我想删除静态局部变量的使用并使函数可重入。

有关如何执行此操作的任何提示或设计建议?

这个问题是不是太模糊了?它是否需要有关我目前正在使用的设计的更多详细信息?还是在这种情况下可以遵循一般的设计模式?

4

2 回答 2

2

不要使用静态局部变量来维护状态,而是让调用者将这些状态变量作为参数传递给您的函数。这意味着你的调用者必须保持状态,但这通常是你想要的。

于 2013-07-10T16:40:58.193 回答
1

您可以使用以下解决方案之一保护您的代码:

  1. MutexSemaphore与您的静态变量一起使用。
  2. 在功能前禁用中断,完成后启用。
  3. 禁用多任务系统的调度。
  4. 使用局部变量。
于 2016-04-25T18:53:31.777 回答