2017-12-05 9 views
-1

この単純なロジックをどのように達成するには?if文による簡単なクエリ

void IRQHandler(void) 
{ 
    if(update_variable == 0) 
    { 
     if(CONDITION1) 
     { 

      /* MORE CODE */ 
      update_variable = 1; 
      } 
    } /* Here i want to exit the loop */ 

    if(update_variable == 1) /* execute in next loop */ 
    { 
     if(CONDITION1) 
      { 
      /* MORE CODE */ 
      /*UPDATE SOME ARRAY */ 
      update_variable = 0; /* reset variable for next loop */ 
      } 
     } 
    } 

本質的に、2つの連続した割り込みで同じCONDITION1をチェックしたいと思います。 1回目の割り込みでは、変数の値を1に更新してループを終了します(条件が満たされていれば、以下を実行しないでください)。私が見ているように、私は "if"でブレーク条件を使うことはできません!私はしばらくここに打たれている!私を助けてください!

+1

'if'は条件です。あなたが'中断する 'ループではありません! –

+0

スイッチ付きの静的変数を使用します。 –

答えて

2

あなたはループを言及していて、いずれかを使用していません。

あなたの質問について私が理解しているところでは、2番目の条件を入力したくないので、elseの条件を使用してください。

void IRQHandler(void) 
{ 
    if(update_variable == 0) 
    { 
     if(CONDITION1) 
     { 

      /* MORE CODE */ 
      update_variable = 1; 
      } 
    } /* Here i want to exit the loop */ 

    else if(update_variable == 1) /* execute in next loop */ 
    { 
     if(CONDITION1) 
      { 
      /* MORE CODE */ 
      /*UPDATE SOME ARRAY */ 
      update_variable = 0; /* reset variable for next loop */ 
      } 
     } 
    } 
0

コードループがありません。ifの条件を使用した選択文だけです。

この場合、これを関数本体として見て、残りの部分に実行を継続しないようにするには、関数から常にreturn ;を使用できます。

0
if(update_variable == 0) 
    { 
     if(CONDITION1) 
     { 
      /* MORE CODE */ 
      update_variable = 1; 
      } 
     return; 
    } /* Here i want to exit the loop */ 

ループではないので、breakからは何もありません。機能を終了するには、returnを使用します。

このケースではM.Kの答えに行き、elseを使用する方が良いですが、コード内の任意の場所で関数を終了することは常にオプションです。多くのネストされたif文を終了したい場合には非常に便利です。

例:

if(cond1) { 
    <code> 
    if(cond2) { 
     <code> 
     if(cond3) { 
     <code> 
     if(cond4) { 
      return; 
     } 
     <code> 
     } 
    <code> 
    } 
} 
-1
if(CONDITION1) 
{ 
    if(update_variable == 0) 
    { 
     /* MORE CODE */ 
      update_variable = 1; 
    } 
    else if(update_variable == 1) 
    { 
     /*Update Some Array*/ 
     /* MORE CODE */ 
      update_variable == 0; 
    } 
} 

だけelse条件を使用して、あなたが最初にCONDITION1をチェックすると、それは良いだろう。

+0

if else文を次のような1行の文に変更することができます: 'update_variable = 0? 1:0'、そしてここで** CONDITION1 **は何ですか? –