用KEIL C编译器的时候,屏蔽了一些函数编译不过,这是为什么呢 ,是不是哪里可以设置检测错误的级别呢? 拿到的是厂家的程序,要自己改动下,可是总报错误,有时候定义一个变量也出错,没有理由的出错啊,换个位置定义就好了 ,太奇怪了,各位有遇到过这种问题的吗,请指点迷津啊~ 谢谢~
没说明的函数,位置很重要
如果是这样:肯定会不对。
u8 Fun1(){
Fun2()
}
u8 Fun2(){
}
改成这样就对了
u8 Fun2(){
}
u8 Fun1(){
Fun2()
}
看看声明部分对不对
变量,函数出错,看看变量,函数声明对不对。
使用前要声明才能用。
u8 Fun2();
u8 Fun1(){
Fun2()
}
u8 Fun2(){
}
这样就可以用。看看头文件包含等.....
谢谢各位的回复
谢谢大家~
我说的屏蔽是不调用那个定义的函数了,比如我定义了一个函数,然后在比如主程序中调用,编译没问题,但是我把那个调用语句屏蔽掉,就是不调用它,便宜反而出错了。不调用出错,调用了就不出错?? 什么道理?
错误信息如下:
*** 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
你的变量定义有些问题,导致DATA空间溢出,,
看下是定义的问题,还是链接的问题,
那我把那个函数打开就好了
我把屏蔽的那个函数调用一次,就没错误了,这个是为什么呢?
也许是没调用的函数
编译器也给没调用的函数中定义的变量分配了RAM空间导致地址空间溢出。如果调用一下,由于是局部变量,通过变量覆盖,实际上RAM开销并没有增加,所以不报错。建议没有调用的函数注释掉,或者使用条件编译。
LZ还是具体说说哪些函数被你拿掉了,否则每个人都在做假设
也许你拿掉的函数是系统需要用到的函数,你把它拿掉当然要出问题。
你是否真正清楚那些函数的作用?