2

这是一个非常基本的问题,我只是想不出一个好的解决方案。我有一些代码是超级循环类型的架构(无操作系统)。函数中有一些需要求平均值的变量:即需要连续三次输入相同的结果才能调用条件“真”。我的老板现在正在推动所有这些函数可重入,这意味着我的静态局部变量的旧方法不好。他也不想要额外的全局变量。那么有没有另一种好方法来保持多个上下文的条件平均,以允许函数完全可重入?

当前代码示例:

 void foo (void)
    {
        static unsigned int ConditionCount = 0;

        if("SomeCondition" == TRUE)
            {ConditionCount++;}

        if(ConditionCount >= 3)
            {DoSomething();}
    }
4

1 回答 1

3

要使其可重入,请传递一个指针并让调用者维护每个ConditionCount.

 void foo (int *ConditionCount)
    {
        if("SomeCondition" == TRUE)
            {(*ConditionCount)++;}

        if(*ConditionCount >= 3)
            {DoSomething();}
    }
于 2012-09-20T15:03:06.823 回答