求指教KEIL软件指出call not to a function,麻烦请帮忙找下原因,错误箭头总是在switch函数那里

#include<reg52.h>
sbit dula=P2^6;
sbit wela=P2^7;
sbit led0=P1^0;
#define uint unsigned int
#define uchar unsigned char
void delay();
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num;
void main()
{
uchar key_l,key_h;
uchar key;
P3=0xf0;
key_l=P3;
if(key_l=P3&0xf0)
{
delay();
if(key_l=P3&0xf0)
{
key_l=P3&0xf0;
key_l=P3|0x0f;
P3=key_l;
key_h=P3;
key_h=key_h&0x0f;
key_l=key_l&0xf0;
key=key_l+key_h;
}
wela=1;
P0=0xfe;
wela=0;
dula=1;
switch (key)
{
case 0xee: P0=table(0);break;
case 0xde: P0=table(1);break;
case 0xbe: P0=table(2);break;
case 0x7e: P0=table(3);break;
case 0xed: P0=table(4);break;
case 0xdd: P0=table(5);break;
case 0xbd: P0=table(6);break;
case 0x7d: P0=table(7);break;
case 0xeb: P0=table(8);break;
case 0xdb: P0=table(9);break;
case 0xbb: P0=table(10);break;
case 0x7b: P0=table(11);break;
case 0xe7: P0=table(12);break;
case 0xd7: P0=table(13);break;
case 0xb7: P0=table(14);break;
case 0x77: P0=table(15);break;
}
dula=0;
}
}
void delay()
{
uint i,j;
for(i=50;i>0;i--)
for(j=110;j>0;j--);
}
这是KEIL软件烧录软件的板子模型

case 0xee: P0=table[0];break;
case 0xde: P0=table[1];break;
case 0xbe: P0=table[2];break;
case 0x7e: P0=table[3];break;
.........
table后面跟(),编译器会以为table是个函数名,结果找不到,所以报错了。
实际你定义的table是数组,使用数组中的元素时,要用中括号[]
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-14
就是switch函数里面错了,table(0);是函数的格式,table[0];才是数组的格式,照着数组格式改改程序就好了。