2

これはかなり基本的なもので、良い解決策が思い浮かびません。スーパーループ タイプのアーキテクチャ (OS なし) のコードがいくつかあります。平均化を必要とする関数には、いくつかの真実があります。つまり、条件「True」を呼び出すには、同じ入力結果が 3 回続けて必要です。私の上司は現在、これらすべての関数を再入可能にすることを推進しています。つまり、静的ローカル変数の古い方法は役に立たないということです。彼はまた、追加のグローバルを望んでいません。関数が完全に再入可能になるように、複数のコンテキストに対して条件の平均化を維持する別の良い方法はありますか?

現在のコードの例:

 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 に答える