error C171: 'break': missing enclosing loop什么意思?

这个程序是说每次按下k1时递增点亮一只led,全亮时再按下则再次循环开始,k2按下后点亮上面4只led,k3按下后点亮下面4只led,k4按下后关闭所有led。
程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delayms(uint x)
{
uchar t;
while(x--)
{
for(t=0;t<120;t++);
}
}
void main()
{
uchar k,t,key;
P0=0xFF;
P1=0xFF;

while(1);
{
t=P1;
if(t!=0xFF)
{
delayms(10);
//再次检查按键
if(t!=P1)
{
continue ;
}
key=~t>>4;
k=0;
while(key!=0)
{
k++;
key>>=1;
}
switch(k)
{
case 1: if (P0==0x00) P0=0xFF;
P0<<=1;
delayms(200);
break;
case 2: P0=0xF0; break;
case 3: P0=0x0F; break;
case 4: P0=0xFF;
}
}
}
}
编译时显示:
Build target 'Target 1'
compiling Text3.c...
TEXT3.C(26): error C171: 'continue': missing enclosing loop
Target not created
回 做而论道 :
改成break编译时成了
TEXT3.C(26): error C171: 'break': missing enclosing loop

扬帆大鱼
浏览 2545回答 3
3回答

繁花不似锦

while(1);{t=P1;if(t!=0xFF){delayms(10);//再次检查按键if(t!=P1){continue ;}你的while(1)后面有分号,说明是死循环,continue是要在while中才可以的,把分号去掉试一下

慕尼黑5688855

把 continue 改为 break,试试看。-------------------------看出来问题了。在 if(t!=P1){ continue ;}结构的外层,还是个if(t!=0xFF){delayms(10);结构。不是while(1)或其它循环结构,所以不能用continue语句。

喵喔喔

continue表示退出本次循环。编译时报错,请检查是否存在以下问题:continue后面是否缺少分号?continue是否出现在循环结构(for、While等)内?
打开App,查看更多内容
随时随地看视频慕课网APP