|
发表于 2009-8-19 12:21:58
|
显示全部楼层
相同的错误提示,但我碰到的情况似乎不是楼上各位所说的原因造成的,情况如下:
第一处:把VOL数组的定义放在函数体内就警告,放到外面就没事了。
unsigned char vol[2];
void SetVol()
{
// unsigned char vol[2]; //有点搞不明白的是,这个数组的定义为什么就不能放在函数内呢,而第二处却可以。
gb_RunMenuProg=0; //不连续执行
ClearLEDxy(2,0,128,48);
DisplayString(2,0x20,"本机音量:",0);
InputString(4,0x40,vol,1);
}
第二处:
//;*****************************************************************
//;* 子程序名: InputString
//;* 功能描述: 输入一串字符,并在指定位置回显。
//;*
//;* 入口参数: Row:行号;Col:列号;string:字符串指针;len:字符数
//;* 局部变量: chr,number:临时字符缓冲区;i:计数用
//;* 出口参数: string:新输入的字符由它返回。
//;* 建立日期: 2009.8.18
//;* 创 建 者: 杨 鑫
//;* 更新日期:
//;* 修 改 者:
//;*****************************************************************
void InputString(unsigned char Row,unsigned char Col,unsigned char *string,unsigned char len) //reentrant
{ //数组定义在函数体内,不在定义时赋初值就不会警告。加上reentrant 或是把定义和赋初值放到外面,警告也会没有。
//unsigned char number[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 有警告
unsigned char number[20];//={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 无警告
unsigned char chr,i;
for(i=0;i<len;i++)
{
number=string;
}
for(i=0;i<len;i++)
{
if(number!='.')break;
}
DisplayString(Row,Col,string,0);
while(1)
{
if(i<len) if(0!=(chr=InputChar(Row,Col+(6*i)))) number=chr
if(gb_FcuPressEvent)
{
gb_FcuPressEvent=0;
switch(gcu_FcuKey)
{
case KEY_ESC:
gb_FcuPressEvent=1;
return;
break; |
|