标题: 新手小白求大佬们帮助一下,为啥这个单片机程序报错了? [打印本页]

作者: brant965    时间: 2020-6-4 23:30
标题: 新手小白求大佬们帮助一下,为啥这个单片机程序报错了?
/************延时i毫秒函数****************/
void DelayMS(uint ms)
{
        uchar i;
        while(ms--)
        {
                for(i=0;i<120;i++);
        }
}
/************向DS1302写入1字节数据*********/
sj 22.c(23): error C141: syntax error near 'ms', expected ')'
sj 22.c(26): error C202: 'ms': undefined identifier


作者: 沧兴电子    时间: 2020-6-5 06:55
uint 宏定义了吗?这个不能直接拿来用
作者: HC6800-ES-V2.0    时间: 2020-6-5 07:56
141号错误,说明有单词错误,就是“ms”
202号错误,说明有变量没有定义,就是“ms”
总结一下,就是变量ms没有定义申明。看起来是两个错误,实质就是一个错误。因为程序不全,我也不知道最好在哪里加上定义。

作者: 黄youhui    时间: 2020-6-5 08:42
uint 没有声明  在 文件头加上#define uint uint32_t
作者: carpcarey    时间: 2020-6-5 08:45
你试试 void DelayMS(unsigned int ms)
作者: f556    时间: 2020-6-5 09:32
void DelayMS(unsigned int ms)
{
        unsigned char i;
        while(ms--)
        {
                for(i=0;i<120;i++);
        }
}
拷贝,改了一个uint 、uchar,很正常的程序。

Total number of errors: 0
Total number of warnings: 0

作者: f556    时间: 2020-6-5 11:30

回复帖子时,还没有其它回复,现重新看了一下,有人也说出unsigned int这种解决,同感。
回复前也怀疑问题会出在#define uint ....,但看不到程序

对uchar、uint说几点:
1、我本人虽不反感,但不用uchar、uint,不用这个的#define
2、unsigned char 在IDE环境下是蓝色关键字显示,看着更舒服,不易出错
3、读unsigned char(蓝色)比读uchar还方便、快
4、别人的程序到我手上,uchar、u8、uint等立即替换成unsigned char,然后才改其它。
5、输出uint 比输入unsigned int方便了多少,节约了0.n秒,我认为没方便、没节约多少时间。后者一但承蓝色就OK,不用在细看,前者不一定,unit、iunt、uitn只有编译时才知。
祝uchar、uint好运,祝新手们好运!

作者: MikeCai    时间: 2020-6-5 15:03
ms 是函数外部定义的引入参数,函数内部不应一直调用 外部引入的参数,除非 这个 ms 是 外部定义为static的。
这样改:
void DelayMS(unsigned int ms)
{
        unsigned char i;
       unsigned int delayms =ms;
        while(delayms --)
        {
                for(i=0;i<120;i++);
        }
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1