c-需要对简单led程序的控制结构提出建议



分配需要4 int输入来选择LED闪烁的不同模式

  1. 打开
  2. 关闭
  3. 闪烁
  4. 工作循环减少

将提供有关更好地实施控制结构的建议。

当前实施

int main() 
{
wiringPiSetup();
pinMode (23, OUTPUT) ;
pinMode (26, OUTPUT) ;

int select; 
printf("nKey in number: ");
scanf("%d", &select);
if (select == 1)
{
turnOn();
main();
} 
else if (select == 0)
{
turnOff();
main();
}
else if (select == 2)
{
blinking();
main();
}
else if (select == 3)
{
pattern();
main();
}
return 0;
}

每次调用main是不必要的。如果你想循环回来,你可以只使用一段时间(true(,它将永远保持在那里(你可以通过设置一个条件来改变这一点(。使用if else的链看起来很糟糕。开关盒要好得多(更快(。

int main() {
wiringPiSetup();
pinMode (23, OUTPUT) ;
pinMode (26, OUTPUT) ;

while(true) {
int select; 
printf("nKey in number: ");
scanf("%d", &select);
switch(select) {
case 0:
turnOff();
break;
case 1:
turnOn();
break;
case 2:
blinking();
break;
case 3:
pattern();
break;
}
}

return 0;
} 
void (* const mode[])(void) =
{
turnOff, turnOn, blinking, pattern
};
for (;;)
{
unsigned int select;
printf("nKey in number: ");
fflush(stdout);
if ((scanf("%u", &select) == 1) &&
(select < sizeof(mode)/sizeof(*mode)))
{
mode[select]();
}
}

最新更新