打印

error C141: syntax error near 'unsigned'的问题

[复制链接]
3315|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinxin2017|  楼主 | 2017-1-24 00:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code setp_table[]={0xdc,0xcc,0xec,0xe4,0xf4,0xf0,0xf8,0xd8};
uchar i,j,disnum,key;
void delay(uint t)
        {
      while(t--);
        }
void main()
        {
    while(1);
           {
      P3=0xff;
     if(P3!=0xff)
         {
          delay(2000);
           if(P3!=0xff)
            {
                key=P3;
                switch(key)
                             {
                              case 0x7f:disnum=1;
                              break;
                              case 0xbf:disnum=2;
                              break;
                              case 0xdf:disnum=3;
                              break;
                              case 0xef:disnum=4;
                              break;
                              case 0xf7:disnum=5;
                              break;
                              case 0xfb:disnum=6;
                              break;
                              case 0xfd:disnum=7;
                              break;
                              case 0xfe:disnum=8;
                              break;
                             }
                       
                             uint i;
                             for(j=8*64*disnum;j>0;j--)
                             {
                             for(i=0;i<8;i++)
                                    {
                                P0=setp_table[i];
                                delay(200);
                                    }
                                 }
            }
         }     
           }  
各位师兄帮我看看错误出在哪里,keil提示:error C141: syntax error near 'unsigned

相关帖子

沙发
徕泽| | 2017-1-24 08:48 | 只看该作者
本帖最后由 徕泽 于 2017-1-24 08:57 编辑

while(1);是个明显错误 把分号去掉。
uint i; 也可能会报错误,如果报错误就把它放在主函数开头
希望对你有帮助,同时建议楼主好好学学c程序!

使用特权

评论回复
板凳
dirtwillfly| | 2017-1-24 08:59 | 只看该作者
变量定义要放在最前面

使用特权

评论回复
地板
xinxin2017|  楼主 | 2017-1-24 15:00 | 只看该作者
谢谢,uint i; 放到前面真的就可以了!
很奇怪了,uint i; 放在函数里面不是局部变量吗? 我看到有人好像也是这么用的,这次为什么不行呢?

使用特权

评论回复
5
kevicki| | 2017-1-25 10:31 | 只看该作者
xinxin2017 发表于 2017-1-24 15:00
谢谢,uint i; 放到前面真的就可以了!
很奇怪了,uint i; 放在函数里面不是局部变量吗? 我看到有人好像也 ...

编译器采用不同标准的差异而已,C89标准要求变量定义放在执行语句前面,C99没有这个要求可以随用随定义

另外看看你这里面"while(1);"这个分号也是醉了。。。

使用特权

评论回复
6
GeekyGeek| | 2017-1-25 13:24 | 只看该作者
j=8*64*disnum 会溢出,编译应该会报警

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝