一个C在问题?

[复制链接]
7683|21
 楼主| tyb520 发表于 2011-4-10 00:57 | 显示全部楼层 |阅读模式
我在KEIL中编译这段程序时候会出现“break”:missing enclosing loop
为什么?
程序:
uchar key_scan()
{
    uchar keycode,scancode;
scancode=0xfd;
if(scancode!=0xef)
{
     KEY=scancode;
  keycode=KEY;
     if((keycode&0xf1)!=0xf1)   break;
     scancode=keycode<<1;
   }
  return(keycode);
}
501813910 发表于 2011-4-10 10:05 | 显示全部楼层
可能是你的安装的问题
 楼主| tyb520 发表于 2011-4-10 10:07 | 显示全部楼层
不是啊,我在编译的时候就出现这样的错误,在C语法上没错误呀!!不懂…………
caijie 发表于 2011-4-10 10:19 | 显示全部楼层
break
一看就知道 语法写的还OK就是break用的地方有问题。
 楼主| tyb520 发表于 2011-4-10 12:20 | 显示全部楼层
回复4楼:    我知道啊,问题就这,错在哪儿啊,语法没错误啊,就是在编译的时候就出现错误了。
ningling_21 发表于 2011-4-10 12:59 | 显示全部楼层
把break;
换为:return;
 楼主| tyb520 发表于 2011-4-10 14:04 | 显示全部楼层
回复6楼:为什么要RETURN啊?
zjsx8192 发表于 2011-4-10 15:40 | 显示全部楼层
换成goto或者return,  break要和for while  switch配对的。
ningling_21 发表于 2011-4-10 16:17 | 显示全部楼层
7# tyb520

因为你的程序没有循环体,不能用BREAK退出
linbei1988 发表于 2011-4-10 16:34 | 显示全部楼层
楼上说的是
老鱼探戈 发表于 2011-4-10 16:39 | 显示全部楼层
LZ百度一下break  和return的区别就知道为什么了
yuyi21ic 发表于 2011-4-10 17:02 | 显示全部楼层
把这句if((keycode&0xf1)!=0xf1)   break;改成while((keycode&0xf1)!=0xf1)   break;或者for(;;(keycode&0xf1)!=0xf1)   break;试试!break只能用于for while switch case这些循环中!
rockli 发表于 2011-4-10 17:36 | 显示全部楼层
如果想执行一次,并且想随时break,那就用
do
{
       xxx break;
       xxxx break;  
}  wile(0);
xb007 发表于 2011-4-10 17:46 | 显示全部楼层
这是C语言的基本语法,break语句仅在循环和case语句中使用!
mbutterfly 发表于 2011-4-10 20:05 | 显示全部楼层
程序有问题。 if((keycode&0xf1)!=0xf1)  这个条件永远不会成立。
jack_shine 发表于 2011-4-10 21:12 | 显示全部楼层
OpCode 发表于 2011-4-10 21:29 | 显示全部楼层
break从来没听说是用来跳出if的:L!
zenwall 发表于 2011-4-10 21:51 | 显示全部楼层
break ??:lol
ayb_ice 发表于 2011-4-11 08:30 | 显示全部楼层
break可不是什么地方都能用的
 楼主| tyb520 发表于 2011-4-11 09:43 | 显示全部楼层
为什么?有键按下高位的某个位就被拉低了,这个条件为真,当没有按下键时候,KEYCODE仍为原值,这个条件就为假了. 15# mbutterfly
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:脚踏实地的做人,脚踏实地的做事……

7

主题

276

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部