我们可以在一个while(1)循环中使用两个break语句吗?

时间:2017-06-01 07:14:16

标签: c

以下是我的计划。我试图以不同的波特率读取字符,如果在10秒内没有收到任何字符,我想突破循环,并且如果收到除字母之外的任何字符,我同样想要突破循环?我怎样才能做到这一点。请指导我。

char read()
{
    while(1)
    {
        delay_ms(10000);
        break;

        if((uart_RxChar() >= 65 && uart_RxChar() <= 90) || (uart_RxChar() >= 97 && uart_RxChar() >= 122))
        {
            uart_TxChar('k');
            Glow_GreenLED();
        }
        else 
        {
            Glow_RedLED();
            break;
        }
    }
}

2 个答案:

答案 0 :(得分:3)

char read()
{
   while(1)
   {
       delay_ms(10000); // Stops the program
       break; // Then leaves

       if( (uart_RxChar() >= 65 && uart_RxChar() <= 90) || (uart_RxChar() >= 97 && uart_RxChar() >= 122))
       {

           uart_TxChar('k');
           Glow_GreenLED();
       }
       else 
       {
           Glow_RedLED();
           break;
       }
    }
 }

您尝试做什么将无法成功。你必须知道延迟不会那样。当你的程序达到延迟时,会在延迟期间停止所有 - 输入。意思是无论你做什么,它都会等待然后休息 使用延迟实现您想要做的事情的唯一方法是使用线程,让一个线程等待并确定时间,另一个线程等待输入。没有线程的方法是使用timer并使用计时器的值作为中断的条件。可能这个link可以提供帮助。 尽管如此,完全可以根据需要设置尽可能多的中断条件:

if (CONDITION_1) 
    break;
else if (CONDITION_2) 
{ 
      printf("something");
      break;
}
else if (CONDITION_3) 
{
      someFunction();
      break;
}
else 
      break;

答案 1 :(得分:2)

你得到的第一个 while(1) { delay_ms(10000); break; 将会脱离循环,意味着,

delay_ms(10000);

相同
break;

您的第二个if-else以及整个php artisan key:generate已被删除&#34;&#34;因为循环会在

之前中断