1

コードを一度だけ実行したい。bool 型のグローバル変数に基づくソリューションを使用しました。私の質問は、それが最善の解決策ですか?

備考:ucos-IIを使用しています。

if (TRUE == Lock)
{
 /*Code to execute one time*/
}

/*The reste of the code*/
4

3 に答える 3

2

静的変数を使用した単純なコード。

static bool once = false;

if (once == false)
{
    once = true;
    // do your "once" stuff here
}
于 2015-07-29T14:48:19.700 に答える
1

このチェックをいつどこで行うかによって異なります。

次のような API があるとします。

void func(bool flag)
{
   if(flag)
   {
      // Code for only one condition
   }
   else
   {
     //Rest of the code
   }
}

次に、TRUE または FALSE を渡すだけで、必要なコードが 1 回だけ実行されるようにすることができます。

それ以外の場合、グローバル変数を持つアプローチも問題ありませんがLOCK、必要なブロックが実行されたら設定を解除する必要があります

if( LOCK == TRUE)
{
   //Execute code
   LOCK = FALSE;
}

LOCKに初期化されたグローバル変数があることを願っています1

ノート:

フラット メモリ システムを使用している場合、グローバル変数を使用することは常に危険であるため、回避する傾向があります。本当に必要な場合は、はい、グローバル変数を使用します。それ以外の場合は、最初のアプローチで提案したフラグを使用できます

于 2015-07-29T14:48:31.060 に答える