如何实现这个简单的逻辑?
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 */
}
}
}
基本上,我想在两个连续的中断上检查相同的CONDITION1。对于第一个中断,我想将变量值更新为1并退出循环(如果条件,则不要执行以下操作)。在我看来,我不能使用“如果”的休息条件!我被震撼了一会儿!请帮帮我!
答案 0 :(得分: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 */
}
}
}
答案 1 :(得分:0)
您的代码中没有循环,只有一堆使用if
条件的选择语句。
在这种情况下,将此视为一个函数体,如果您希望执行不继续执行其余部分,则始终可以从函数中return ;
。
答案 2 :(得分: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>
}
}
答案 3 :(得分:-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
会更好。