keil中定义字符数组的问题

main函数如下:#defineuintunsignedint#defineucharunsignedcharvoidmain(){P0=0xff;P1=30;uchar... main函数如下:
#define uint unsigned int
#define uchar unsigned char
void main()
{
P0=0xff;
P1=30;

uchar ubox[2]; ************************

while(1)
{
output(keyscan());

ubox[0] = otemp/10+48;**************************
ubox[1] = otemp%10+48; *****************************
switch(flag)
{
case 0: lcd(ubox[]);***********************
break;
case 1: lcd(keyscan());
break;
case 2: lcd(keyscan());
break;
case 3: lcd(ubox[]);
}
DA(otemp);
}
}
编译时报错如下:
MAIN.C(24): error C141: syntax error near 'unsigned'
MAIN.C(24): error C202: 'ubox': undefined identifier
MAIN.C(30): error C202: 'ubox': undefined identifier
MAIN.C(31): error C202: 'ubox': undefined identifier
MAIN.C(34): error C141: syntax error near ']'
省去了部分头文件和全局变量,keyscan和lcd和DA都另有函数,otemp是一个0到99的整形数字,应该是字符数组定义的不对,我最初的目的是把一个整形数字16变成一个字符串16。求大神指点迷津啊!(出错的地方我标了“*******************”)
使用的是uVision4软件,C52语言
展开
 我来答
wolf_lhy
推荐于2016-02-26 · TA获得超过6609个赞
知道大有可为答主
回答量:1090
采纳率:66%
帮助的人:550万
展开全部
void main()
{
P0=0xff;
P1=30;

uchar ubox[2]; ************************

那个数组的定义,你可以放到main()函数的外面,也可以放到 P0 = 0xFF之前。
C语言不允许变量定义之前有执行动作,比如你那么 P0 = 0xFF,就属于执行动作,那么,在发生执行动作之后,不允许定义任何变量。这是C语言的语法,但是C++是可以的。

比如说 for(int i = 0;i<9;i++),这句话,在C语言是通不过的,但是在C++是可以的。
追问
哦原来如此!我想再问下,我改过来了,还剩下
case 0: lcd(ubox[]);***********************

这里有问题,报错是和上面最后的一样

当初lcd()函数接口是这个:void lcd(unsigned char dis2[]),我想把字符串32什么的传进去为啥会出问题啊?
追答
你这个类型不对,你直接写lcd(ubox)就行了

你的函数形参是个指针类型,你而如果 lcd(ubox[]),本质上,实参是个uchar类型的,与原来函数定义的不对应,而且,你没有指明ubox[]具体的哪个元素,所以就是个错误。
而ubox本身就代表数组ubox[]的起始地址,其本质是个指针。
ghost4063
2013-08-01 · TA获得超过6522个赞
知道大有可为答主
回答量:2940
采纳率:75%
帮助的人:2772万
展开全部
C51也遵循标准C的规则,所有的变量都申明完毕后才能写实际运行的代码。
因此,main函数中改成这样:

uchar ubox[2];
P0 = 0xff;
P1 = 30;
........
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宾科电子工作室
2013-08-01
知道答主
回答量:45
采纳率:0%
帮助的人:27.1万
展开全部
请把uchar obox[];放到main()函数外面。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式