打印
[开发工具]

请教一个关于KEIL C的问题

[复制链接]
2677|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dudongdao|  楼主 | 2007-11-5 23:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    用KEIL C编译器的时候,屏蔽了一些函数编译不过,这是为什么呢 ,是不是哪里可以设置检测错误的级别呢?  拿到的是厂家的程序,要自己改动下,可是总报错误,有时候定义一个变量也出错,没有理由的出错啊,换个位置定义就好了 ,太奇怪了,各位有遇到过这种问题的吗,请指点迷津啊~ 谢谢~
沙发
浪淘沙| | 2007-11-6 11:17 | 只看该作者

“屏蔽了一些函数”是什么意思?

出错信息是什么?

使用特权

评论回复
板凳
唐靖丰| | 2007-11-7 18:54 | 只看该作者

没说明的函数,位置很重要

如果是这样:肯定会不对。
u8 Fun1(){
   Fun2()
}

u8 Fun2(){

}

改成这样就对了
u8 Fun2(){

}

u8 Fun1(){
   Fun2()
}

使用特权

评论回复
地板
hall919| | 2007-11-9 09:54 | 只看该作者

看看声明部分对不对

变量,函数出错,看看变量,函数声明对不对。
 使用前要声明才能用。

u8 Fun2();

u8 Fun1(){
   Fun2()
}

u8 Fun2(){

}
这样就可以用。看看头文件包含等.....

使用特权

评论回复
5
walnutcy| | 2007-11-11 11:30 | 只看该作者

从错误提示去一个个查下就好了,呵呵

使用特权

评论回复
6
dudongdao|  楼主 | 2007-11-12 15:33 | 只看该作者

谢谢各位的回复

   谢谢大家~
   我说的屏蔽是不调用那个定义的函数了,比如我定义了一个函数,然后在比如主程序中调用,编译没问题,但是我把那个调用语句屏蔽掉,就是不调用它,便宜反而出错了。不调用出错,调用了就不出错?? 什么道理?
错误信息如下:
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA    
    SEGMENT: ?DT?_TIME_DISPLAY_FUNCTION?DUAL_QUAD
    LENGTH:  0006H
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA    
    SEGMENT: ?DT?PSEUDO_8CH_TITLE_DISPLAY_ORG?DUAL_QUAD
    LENGTH:  0005H
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA    
    SEGMENT: ?DT?_MEAASGE_FONT_DISPLAY?DUAL_QUAD
    LENGTH:  0005H
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA    
    SEGMENT: ?DT?_DEC_DATA_DISPLAY_REC?DUAL_QUAD
    LENGTH:  0005H
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA    
    SEGMENT: ?DT?MENU_PAGE0_BOX_DISPLAY?DUAL_QUAD
    LENGTH:  0001H
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA    
    SEGMENT: ?DT?ALARM_CHECK_FUNCTION_ORG?DUAL_QUAD
    LENGTH:  0001H
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
    SYMBOL:  ?_DEC_DATA_DISPLAY_REC?BYTE
    SEGMENT: ?DT?_DEC_DATA_DISPLAY_REC?DUAL_QUAD
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
    SYMBOL:  ?_MEAASGE_FONT_DISPLAY?BYTE
    SEGMENT: ?DT?_MEAASGE_FONT_DISPLAY?DUAL_QUAD
Program Size: data=209.0 xdata=0 code=49865
Target not created

使用特权

评论回复
7
walnutcy| | 2007-11-12 15:50 | 只看该作者

你的变量定义有些问题,导致DATA空间溢出,,

看下是定义的问题,还是链接的问题,

使用特权

评论回复
8
dudongdao|  楼主 | 2007-11-12 16:20 | 只看该作者

那我把那个函数打开就好了

   我把屏蔽的那个函数调用一次,就没错误了,这个是为什么呢?

使用特权

评论回复
9
lws| | 2007-11-15 15:50 | 只看该作者

也许是没调用的函数

编译器也给没调用的函数中定义的变量分配了RAM空间导致地址空间溢出。如果调用一下,由于是局部变量,通过变量覆盖,实际上RAM开销并没有增加,所以不报错。建议没有调用的函数注释掉,或者使用条件编译。

使用特权

评论回复
10
浪淘沙| | 2007-11-15 16:15 | 只看该作者

LZ还是具体说说哪些函数被你拿掉了,否则每个人都在做假设

也许你拿掉的函数是系统需要用到的函数,你把它拿掉当然要出问题。

你是否真正清楚那些函数的作用?

使用特权

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

本版积分规则

90

主题

413

帖子

1

粉丝