请教一个关于KEILC的问题

liangzuolin   2007-11-5 23:55 楼主
                                     用KEIL C编译器的时候,屏蔽了一些函数编译不过,这是为什么呢 ,是不是哪里可以设置检测错误的级别呢?  拿到的是厂家的程序,要自己改动下,可是总报错误,有时候定义一个变量也出错,没有理由的出错啊,换个位置定义就好了 ,太奇怪了,各位有遇到过这种问题的吗,请指点迷津啊~ 谢谢~

回复评论 (9)

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

                                 出错信息是什么?
点赞  2007-11-6 11:17

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

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

u8 Fun2(){

}

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

}

u8 Fun1(){
   Fun2()
}

点赞  2007-11-7 18:54

看看声明部分对不对

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

u8 Fun2();

u8 Fun1(){
   Fun2()
}

u8 Fun2(){

}
这样就可以用。看看头文件包含等.....
点赞  2007-11-9 09:54

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

                                  
点赞  2007-11-11 11:30

谢谢各位的回复

   谢谢大家~
   我说的屏蔽是不调用那个定义的函数了,比如我定义了一个函数,然后在比如主程序中调用,编译没问题,但是我把那个调用语句屏蔽掉,就是不调用它,便宜反而出错了。不调用出错,调用了就不出错?? 什么道理?
错误信息如下:
*** 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
点赞  2007-11-12 15:33

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

                                 看下是定义的问题,还是链接的问题,
点赞  2007-11-12 15:50

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

                                    我把屏蔽的那个函数调用一次,就没错误了,这个是为什么呢?
点赞  2007-11-12 16:20

也许是没调用的函数

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

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

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

你是否真正清楚那些函数的作用?
点赞  2007-11-15 16:15
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复