标题: Keil c51 c语言编译错误 [打印本页]

作者: 1484068565    时间: 2020-4-19 10:10
标题: Keil c51 c语言编译错误
#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar data a[32]_at_0x30;
uint i_at_0x55;
void DelayMS(uint ms)
{
        uchar t;
        while(ms--) for(t=0;t<120;t++);
}
void main()
{
        SP=0x60;
        SCON=0x52;
        TMOD=0x20;
        TH1=0xf3;
        TR1=1;
        for(i=0;i<32;i++)
        {
                a[ i]=i;
                printf("It is :5%d now.\n",i);
                DelayMS(20000);
        }
        whlie(1);
}
这是我在KEIL中编写的程序,但是在编译的时候出现了错误,就是红色的那一行:uchar data a[32]_at_0x30;
错误显示为esimlab3.c(5): error C129: missing ';' before '_at_0x30'。我有点不理解,求大神指教小白


作者: Mr.shu    时间: 2020-4-19 12:01
这是定义还是赋值?如果是定义,没有空格分开,编译器可能会报错,可以采用常规定义或者赋值等式呀
作者: 黄youhui    时间: 2020-4-19 13:01
非法变量名,C语言变量名由字母数字下划线组成,而且只能字母或则下划线开头。
作者: wulin    时间: 2020-4-19 13:37
就这么几条语句,抄都抄不好,错误5、6处。楼主还得从0学起。
作者: xuyaqi    时间: 2020-4-19 14:19
既然用C就不要指定存储地址,让编译器处理,uchar data a[32]_at_0x30;改成uchar data a[32];
作者: f556    时间: 2020-4-19 14:20
uchar data a[32]_at_0x30;
改成
uchar data,a[32]_at_0x30;
data是一个数据,a是数据
或者uchar data_a[32]_at_0x30;
data_a是一个数组。
作者: Youth8023    时间: 2020-4-19 16:42
uchar data a[32]_at_0x30;错误语句,
要区分到底是定义还是声明
C语音中标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字,但可以是字母或者下划线
作者: xuyaqi    时间: 2020-4-19 17:00
注意空格,改成这样:uchar data a[32]_at_ 0x30;    _at_,0x30之间有空格。
作者: 1484068565    时间: 2020-4-19 23:23
wulin 发表于 2020-4-19 13:37
就这么几条语句,抄都抄不好,错误5、6处。楼主还得从0学起。

多谢指点,我确实刚开始学这门课,还得多多学习。
作者: 1484068565    时间: 2020-4-19 23:25
xuyaqi 发表于 2020-4-19 17:00
注意空格,改成这样:uchar data a[32]_at_ 0x30;    _at_,0x30之间有空格。

多谢多谢
作者: 1484068565    时间: 2020-4-19 23:26
f556 发表于 2020-4-19 14:20
uchar data a[32]_at_0x30;
改成
uchar data,a[32]_at_0x30;

非常感谢!!!
作者: 1484068565    时间: 2020-4-19 23:30
Youth8023 发表于 2020-4-19 16:42
uchar data a[32]_at_0x30;错误语句,
要区分到底是定义还是声明
C语音中标识符由字母(A-Z,a-z)、数字(0- ...

data主要说明数据保存在片内RAM里面,这个单片机C51的c语言编程,和c有点不同




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