打印

请问下这是什么错误

[复制链接]
2576|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxm2009|  楼主 | 2010-10-27 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
se, AN, ge, dc
can't find 0x25D words (0x25d withtotal) for psect "stringtext" in segment "STRCODE" (largest unused contiguous range 0x229)

网上也没找到相关资料 有朋友知道这么错吗 给提点下
3Q了
沙发
yewuyi| | 2010-10-27 11:33 | 只看该作者
这一般是变量定义超过了某个BANK容量导致的错误提示。

可以屏蔽部分变量看看是否解除错误提示。

使用特权

评论回复
板凳
lxm2009|  楼主 | 2010-10-27 14:22 | 只看该作者
没查处原因啊,如下我标注注释那里 ,不要加注释那两句可以编译通过,加上就报我说的那个错,会是什么原因呢?
else if(CommandNum>=10&&CommandNum<14)
       {
        safekey[CommandNum-10]=ReceiveData[3];
           if(CommandNum==13){
               switch(Len)
                 {
                    case 4:
                        {
                        
                         temphan();
                         safekey[0]=(Num/1000);
                         Num %= 1000;
                         safekey[1]=(Num/100);
                         Num %= 100;
                         safekey[2]=(Num/10);
                         Num %= 10;
                         safekey[3]=Num;
                          for(nm9=0;nm9<4;nm9++)
                          {EEpromWrite(10+nm9,safekey[nm9]);}
                         }break;
                      case 5:
                        {
                        
                         temphan();
                         safekey[0]=(Num/1000);
                         Num %= 1000;
                         safekey[1]=(Num/100);
                         Num %= 100;
                         safekey[2]=(Num/10);
                         Num %= 10;
                          safekey[3]=Num;
                          for(nm9=0;nm9<4;nm9++)
                          {EEpromWrite(10+nm9,safekey[nm9]);}
                         }break;
                        
                        
                         case 6:
                        {
                        
                         temphan();
                         safekey[0]=(Num/100000);//这里添加就报错
                         Num %= 1000000;//这里添加了就报错
                         safekey[1]=(Num/10000);
                         Num %= 100000;
                         safekey[2]=(Num/1000);
                         Num %= 10000;
                         safekey[3]=(Num/100);
                         Num %= 1000;
                         safekey[4]=(Num/10);
                         Num %= 10;
                         safekey[5]=Num;
                          for(nm9=0;nm9<7;nm9++)
                          {EEpromWrite(10+nm9,safekey[nm9]);}
                         }break;
                        
                       default:
                         break;
                }
}
        
       }
unsigned long Num;
void temphan()
{

  unsigned long uk=0x1000000;
  unsigned char m;
  for(m=0;m<4;m++)
   {
     Num+=safekey[m]*uk;
     uk>>2;
    }
}

使用特权

评论回复
地板
yewuyi| | 2010-10-27 14:38 | 只看该作者
case后面不需要花括符。
--------------------------------------------------
case 4:{
。。。。。。。
           }break;

只需要:
case 4:
          break;
--------------------------------------------------------
不知道你是从哪里搞出来的这个用法?!

使用特权

评论回复
5
lxm2009|  楼主 | 2010-10-27 14:46 | 只看该作者
试了下好象和这个关系不大 请问LONG型数据很吃内存?

使用特权

评论回复
6
yewuyi| | 2010-10-27 15:08 | 只看该作者
试了下好象和这个关系不大 请问LONG型数据很吃内存?
lxm2009 发表于 2010-10-27 14:46


你先把那些花括符去掉。

LONG类型大约要占用4个字节的RAM空间。

使用特权

评论回复
7
yewuyi| | 2010-10-27 15:12 | 只看该作者
类似unsigned long Num;这样的定义,一般是要求在当前文件所有函数前面定义,如果作用域为当前函数,则应该放到函数内定义为局部变量,一般不建议夹在函数中间定义,即使容许,也容易引起变量作用域混乱。

使用特权

评论回复
8
yewuyi| | 2010-10-27 15:15 | 只看该作者
另外,你的错误时因为注释引起的还是带注释的那两行代码引起的?

你的问题让人发晕,不知道到底是代码导致的错误,还是因为加了那两行注释就报错。

如果是加了注释就报错,那可能是输入错误,可以把当前行删除重新切换到英文状态下输入一次再编译看看。

特别PS:编译器编译提示的报错行未必就一定是那一行错了,这个不是必然的。

使用特权

评论回复
9
aaa2742| | 2010-10-27 18:17 | 只看该作者
楼上说的很正确

使用特权

评论回复
10
兰天白云| | 2010-10-27 19:17 | 只看该作者
把添加注释的下面两行去掉试试,去掉后应该正常

使用特权

评论回复
11
jack_shine| | 2010-10-28 10:08 | 只看该作者
case后面不需要花括符。
--------------------------------------------------
case 4:{
。。。。。。。
           }break;

只需要:
case 4:
          break;
------------------------------------------------ ...
yewuyi 发表于 2010-10-27 14:38

此用法在**公司软件规范里有写到

使用特权

评论回复
12
jxhzsq| | 2010-10-28 11:23 | 只看该作者
safekey[0]=(Num/100000);//这里添加就报错
                         Num %= 1000000;//这里添加了就报错

100000可能超出数据定义类型范围.

使用特权

评论回复
13
diweo| | 2010-10-29 10:41 | 只看该作者
应该是100000太大了。看样子你是要把一个数的每一位都分离出来。
尝试变通一下看行不行
safekey[0]=(Num/1000)/100;
Num-=safekey[0]*1000*100;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

1

粉丝