打印

各位版主给看下这个程序,总是说语法出现问题

[复制链接]
1442|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tulufan234|  楼主 | 2014-9-4 10:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
switch(menu)
  {
     case 0://待机菜单按键操作
       {
            if(enter==0||esc==0||left==0||right==0)
            {delay(10);
             if(enter==0||esc==0||left==0||right==0)menu++;
             if(menu>1)menu=1;
            }
           break;
       }      
/****主菜单按键****/     
     case 1://功能主菜单按键操作
       {
            if(enter==0){delay(10);if(enter==0){menu=row+1;row=1;}while(!enter);}
            if(esc==0){delay(10);if(esc==0){menu--;}while(!esc);}
            if(left==0){delay(10);if(left==0){row--;if(row<1)row=4;}while(!left);}
            if(right==0){delay(10);if(right==0){row++;if(row>4)row=1;}while(!right);}
            break;
       }
}
enter,esc,right,left,都宏定义过了,但是每个if语句都出现了语法问题,“error: syntax error before ';' token”,不知道问什么?求解

相关帖子

沙发
msblast| | 2014-9-4 11:04 | 只看该作者
先把代码整理好吧

使用特权

评论回复
板凳
l_lin2003| | 2014-9-4 11:36 | 只看该作者
好像是那一行没加“;”号
另外,宏定义一般用大写
你的代码太难读,干嘛都写到一行里,
if()


else


if语句这样写,好读,有错误也好查

使用特权

评论回复
地板
bluesky001| | 2014-9-4 12:42 | 只看该作者
(1)先看第一个错误在哪里。这个最重要。
(2)你的delay()函数在这段代码之前被声明了吗?

使用特权

评论回复
5
WYT440| | 2014-9-4 13:56 | 只看该作者
友情帮整理一下,最好能把错误提示给截图过来,这样看比较费劲.....:o
switch(menu)
  {
     case 0://待机菜单按键操作
       {
            if(enter==0||esc==0||left==0||right==0)
            {
                delay(10);
                if(enter==0||esc==0||left==0||right==0)
                {
                    menu++;
                }

                if(menu>1)
                {
                    menu=1;
                }
            }
           break;
       }
/****主菜单按键****/     
     case 1://功能主菜单按键操作
       {
            if(enter==0)
            {
                delay(10);
                if(enter==0)
                {
                    menu=row+1;
                    row=1;
                }while(!enter);
            }

            if(esc==0)
            {
                delay(10);
                if(esc==0)
                {
                    menu--;
                }while(!esc);
            }

            if(left==0)
            {
                delay(10);
                if(left==0)
                {
                    row--;
                    if(row<1)
                    row=4;
                }while(!left);
            }

            if(right==0)
            {
                    delay(10);
                if(right==0)
                {
                    row++;
                    if(row>4)
                    row=1;
                }while(!right);
            }
            break;
       }
}

使用特权

评论回复
6
aeromoon| | 2014-9-5 09:55 | 只看该作者
while()后面加个“ ; ”干啥用的。

使用特权

评论回复
7
bestray| | 2014-9-5 12:04 | 只看该作者
明显语法错了,哪里少符号~

使用特权

评论回复
8
zhbb876| | 2014-9-10 22:54 | 只看该作者
switch( int )
    {
         case 1:
              ...
              break;
         .....
         default:
    }

使用特权

评论回复
9
longmaodo| | 2014-9-24 14:51 | 只看该作者
aeromoon 发表于 2014-9-5 09:55
while()后面加个“ ; ”干啥用的。

这是一个很NB的去抖 看的我。。。。

使用特权

评论回复
10
sdnumcu| | 2014-9-25 16:40 | 只看该作者
while()后面加个“ ; ”干啥用的

使用特权

评论回复
11
aeromoon| | 2014-9-25 17:22 | 只看该作者
longmaodo 发表于 2014-9-24 14:51
这是一个很NB的去抖 看的我。。。。

什么意思,不懂哇

使用特权

评论回复
12
hgjinwei| | 2014-9-26 22:45 | 只看该作者
if(xx){}while(xx); ??

do{}while(xx); ??

使用特权

评论回复
13
longmaodo| | 2014-9-28 14:35 | 只看该作者
aeromoon 发表于 2014-9-25 17:22
什么意思,不懂哇

就是他会让程序一直停在while(!xxx)处,直到按键改成1. 这样写的坏处就是一旦有一个按键短路了,整个系统就不运行了。

使用特权

评论回复
14
ticomi| | 2014-9-28 18:54 | 只看该作者
你的分号可能是中文,建议把错误行的分号用英文再输入一次试试!!

使用特权

评论回复
15
WJD917108| | 2014-9-28 21:25 | 只看该作者
看看半天,越看越乱

使用特权

评论回复
16
菜鸟同学| | 2014-9-29 21:33 | 只看该作者
看看有没有优先级问题,你的宏是啥样的,你调用的功能函数是否本身就有错误,我怀疑你的宏有问题,都加括号试试,程序编译问题是基本功,不要指望别人,

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
sdnumcu + 2 赞一个!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

0

粉丝