c编译器错误与解决方法.docx

上传人:b****3 文档编号:5325423 上传时间:2023-05-08 格式:DOCX 页数:14 大小:20.39KB
下载 相关 举报
c编译器错误与解决方法.docx_第1页
第1页 / 共14页
c编译器错误与解决方法.docx_第2页
第2页 / 共14页
c编译器错误与解决方法.docx_第3页
第3页 / 共14页
c编译器错误与解决方法.docx_第4页
第4页 / 共14页
c编译器错误与解决方法.docx_第5页
第5页 / 共14页
c编译器错误与解决方法.docx_第6页
第6页 / 共14页
c编译器错误与解决方法.docx_第7页
第7页 / 共14页
c编译器错误与解决方法.docx_第8页
第8页 / 共14页
c编译器错误与解决方法.docx_第9页
第9页 / 共14页
c编译器错误与解决方法.docx_第10页
第10页 / 共14页
c编译器错误与解决方法.docx_第11页
第11页 / 共14页
c编译器错误与解决方法.docx_第12页
第12页 / 共14页
c编译器错误与解决方法.docx_第13页
第13页 / 共14页
c编译器错误与解决方法.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c编译器错误与解决方法.docx

《c编译器错误与解决方法.docx》由会员分享,可在线阅读,更多相关《c编译器错误与解决方法.docx(14页珍藏版)》请在冰点文库上搜索。

c编译器错误与解决方法.docx

c编译器错误与解决方法

c编译器错误与解决方法

keilc编译器错误与解决方法

小提示:

按Ctrl+F键可以直接查找:

1.Warning280:

’i’:

unreferencedlocalvariable

说明局部变量i在函数中未作任何的存取操作解决方法消除函数中i变量的宣告

2Warning206:

’Music3’:

missingfunction-prototype说明Music3()函数未作宣告或未作外部宣告所以无法给其他函数调用解决方法将叙述voidMusic3(void)写在程序的最前端作宣告如果是其他文件的函数则要写

成externvoidMusic3(void),即作外部宣告

3Compling:

C:

\8051\MANN.C

Error:

318:

can’topenfile‘beep.h’

说明在编译C:

\8051\MANN.C程序过程中由于main.c用了指令,include“beep.h”,但

却找不到所致解决方法编写一个beep.h的包含档并存入到c:

\8051的工作目录中

4Compling:

C:

\8051\LED.C

Error237:

’LedOn’:

functionalreadyhasabody

说明LedOn()函数名称重复定义即有两个以上一样的函数名称解决方法修正其中的一个函数名称使得函数名称都是独立的

5***WARNING16:

UNCALLEDSEGMENT,IGNOREDFOROVERLAY

PROCESS

SEGMENT:

?

PR?

_DELAYX1MS?

DELAY

说明DelayX1ms()函数未被其它函数调用也会占用程序记忆体空间解决方法去

DelayX1ms()函数或利用条件编译#if„..#endif,可保留该函数并不编译

6***WARNING6:

XDATASPACEMEMORYOVERLAPFROM:

0025H

TO:

0025H

说明外部资料ROM的0025H重复定义地址

解决方法外部资料ROM的定义如下PdataunsignedcharXFR_ADC_at_0x25

其中XFR_ADC

变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25处并修正它7WARNING206:

’DelayX1ms’:

missingfunction-prototype

C:

\8051\INPUT.C

Error267:

’DelayX1ms‘:

requiresANSI-styleprototypeC:

\8051\INPUT.C说明程序中有调用DelayX1ms函数但该函数没定义即未编写程序内容或函数

已定义但未作

宣告

解决方法编写DelayX1ms的内容编写完后也要作宣告或作外部宣告可在

delay.h的包含档

宣告成外部以便其它函数调用

8***WARNING1:

UNRESOLVEDEXTERNALSYMBOLSYMBOL:

MUSIC3

MODULE:

C:

\8051\MUSIC.OBJ(MUSIC)***WARNING2:

REFERENCEMADETOUNRESOLVEDEXTERNAL

SYMBOL:

MUSIC3

MODULE:

C:

\8051\MUSIC.OBJ(MUSIC)ADDRESS:

0018H

说明程序中有调用MUSIC函数但未将该函数的含扩档C加入到工程档Prj作编译和连接

解决方法设MUSIC3函数在MUSICC里将MUSICC添加到工程文件中去9***ERROR107:

ADDESSSPACEOVERFLOWSPACE:

DATA

SEGMENT:

_DATA_GOUP_

LENGTH:

0018H

***ERROR118:

REFERENCEMADETOERRONEOUSEXTERNAL

SYMBOL:

VOLUME

MODULE:

C:

\8051\OSDM.OBJ(OSDM)ADDRESS:

4036H

说明data存储空间的地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存

储模式设为SMALL则局部变量先使用工作寄存器R2~R7作暂存当存储器不够用时则会

以data型别的空间作暂存的个数超过0x7f时就会出现地址不够的现象解决方法将以data型别定义的公共变量修改为idata型别的定义

说明如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的

解决办法加以归纳以期共享

10.***WARNINGL15:

MULTIPLECALLTOSEGMENTSEGMENT:

?

PR?

_WRITE_GMVLX1_REG?

D_GMVLX1CALLER1:

?

PR?

VSYNC_INTERRUPT?

MAINCALLER2:

?

C_C51STARTUP

***WARNINGL15:

MULTIPLECALLTOSEGMENTSEGMENT:

?

PR?

_SPI_SEND_WORD?

D_SPICALLER1:

?

PR?

VSYNC_INTERRUPT?

MAINCALLER2:

?

C_C51STARTUP

***WARNINGL15:

MULTIPLECALLTOSEGMENTSEGMENT:

?

PR?

SPI_RECEIVE_WORD?

D_SPICALLER1:

?

PR?

VSYNC_INTERRUPT?

MAINCALLER2:

?

C_C51STARTUP

该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断

服务程序的函数)同时调用,

或者同时被多个中断服务程序调用。

出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可

能会被一

个中断打断,从而使得结果发生变化

并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时

候都可以被ISR打断,一段时间后又可以

运行,但是相应数据不会丢失)。

原因之二是用于局部变量和变量(暂且这样翻译,arguments,[自变量,变元一数值,用于

确定程序或子程序的值])的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的

内存区就会

被使用,这将导致其他函数的内存冲突。

例如,第一个警告中函数WRITE_GMVLX1_REG在D_GMVLX1.C或者D_GMVLX1.A51被定义,

它被一个中断服务程序或者一个调用了中断

服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C中。

解决方法:

如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁止),并

且该函数不占用内存(假设只使用寄存器),

则你可以完全忽略这种警告。

如果该函数占用了内存,则应该使用连接器(linker)OVERLAY指令将函数从覆

盖分析

(overlayanalysis)中除去,例如:

OVERLAY(?

PR?

_WRITE_GMVLX1_REG?

D_GMVLX1!

*)

上面的指令防止了该函数使用的内存区被其他函数覆盖。

如果该函数中调用了其他函数,

而这些被调用在程序中其他地方也被调用,

你可能会需要也将这些函数排除在覆盖分析(overlayanalysis)之外。

这种OVERLAY指令能

使编译器除去上述警告信息。

如果函数可以在其执行时被调用,则情况会变得更复杂一些。

这时可以采用以下几种方

法:

1.主程序调用该函数时禁止中断,可以在该函数被调用时用#pragmadisable语句来实现禁

止中断的目的。

必须使用OVERLAY指令将该函数

从覆盖分析中除去。

2.复制两份该函数的代码,一份到主程序中,另一份复制到中断服务程序中。

3.将该函数设为重入型。

例如:

voidmyfunc(void)reentrant{...

}

这种设置将会产生一个可重入堆栈,该堆栈被被用于存储函数值和局部变量,用

这种

方法时重入堆栈必须在STARTUP.A51文件中配置。

这种方法消耗更多的RAM并会降低重入函数的执行速度。

11.***WARNINGL16:

UNCALLEDSEGMENT,IGNOREDFOROVERLAY

PROCESS

SEGMENT:

?

PR?

_COMPARE?

TESTLCD说明:

程序中有些函数(或片段)以前(调试过程中)从未被调用过,或者根本没有

调用它的语句。

这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。

只要做点简

单的调整就可以。

不理它也没什么大不了的。

解决方法:

去掉COMPARE()函数或利用条件编译#if„..#endif,可保留该函数并不

编译。

C编译器错误信息中文翻译

Ambiguousoperatorsneed

parentheses

不明确的运算需要用括号括起

Ambiguoussymbol``xxx``

不明确的符号

Argumentlistsyntaxerror

参数表语法错误

Arrayboundsmissing

丢失数组界限符

Arraysizetoolarge

数组尺寸太大

Badcharacterinparamenters参数中有不适当的字符

Badfilenameformatinincludedirective

包含命令中文件名格式不正确

Badifdefdirectivesynatax编译预处理ifdef有语法错

Badundefdirectivesyntax编译预处理undef有语法错

Bitfieldtoolarge

位字段太长

Callofnon-function

调用未定义的函数

Calltofunctionwithnoprototype

调用函数时没有函数的说明

Cannotmodifyaconstobject

不允许修改常量对象

Caseoutsideofswitch漏掉了case语句

Casesyntaxerror

Case语法错误

Codehasnoeffect

代码不可述不可能执行到

Compoundstatementmissing{分程序漏掉"{"

Conflictingtypemodifiers不明确的类型说明符

Constantexpressionrequired要求常量表达式

Constantoutofrangeincomparison

在比较中常量超出范围

Conversionmaylose

significantdigits

转换时会丢失意义的数字

Conversionofnearpointernotallowed

不允许转换近指针

Couldnotfindfile``xxx``找不到XXX文件

Declarationmissing;说明缺少";"

Declarationsyntaxerror说明中出现语法错误

DefaultoutsideofswitchDefault出现在switch语句之外

Definedirectiveneedsanidentifier

定义编译预处理需要标识符

Divisionbyzero

用零作除数

DostatementmusthavewhileDo-while语句中缺少while部分

Enumsyntaxerror

枚举类型语法错误

Enumerationconstantsyntaxerror

枚举常数语法错误

Errordirective:

xxx错误的编译预处理命令

Errorwritingoutputfile写输出文件错误

Expressionsyntaxerror表达式语法错误

Extraparameterincall调用时出现多余错误

Filenametoolong

文件名太长

Functioncallmissing)函数调用缺少右括号

Fuctiondefinitionoutofplace函数定义位置错误

Fuctionshouldreturnavalue函数必需返回一个值

GotostatementmissinglabelGoto语句没有标号

Hexadecimaloroctalconstanttoolarge

16进制或8进制常数太大

Illegalcharacter``x``非法字符x

Illegalinitialization

非法的初始化

Illegaloctaldigit

非法的8进制数字

Illegalpointersubtraction非法的指针相减

Illegalstructureoperation非法的结构体操作

Illegaluseoffloatingpoint非法的浮点运算

Illegaluseofpointer指针使用非法

Improperuseofa

typedefsymbol

类型定义符号使用不恰当

In-lineassemblynotallowed不允许使用行间汇编

Incompatiblestorageclass存储类别不相容

Incompatibletypeconversion不相容的类型转换

Incorrectnumberformat错误的数据格式

IncorrectuseofdefaultDefault使用不当

Invalidindirection无效的间接运算

Invalidpointeraddition指针相加无效

Irreducibleexpressiontree无法执行的表达式运算

Lvaluerequired

需要逻辑值0或非0值

Macroargumentsyntaxerror宏参数语法错误

Macroexpansiontoolong宏的扩展以后太长

Mismatchednumberofparametersindefinition定义中参数个数不匹配

Misplacedbreak

此处不应出现break语句

Misplacedcontinue

此处不应出现continue语句

Misplaceddecimalpoint

此处不应出现小数点

Misplacedelifdirective不应编译预处理elif

Misplacedelse

此处不应出现else

Misplacedelsedirective此处不应出现编译预处理else

Misplacedendifdirective此处不应出现编译预处理endif

Mustbeaddressable必须是可以编址的

Musttakeaddressofmemorylocation

必须存储定位的地址

Nodeclarationforfunction``xxx``

没有函数xxx的说明

Nostack

缺少堆栈

Notypeinformation没有类型信息

Non-portablepointer

assignment

不可移动的指针(地址常数)赋

Non-portablepointercomparison

不可移动的指针(地址常数)比

Non-portablepointerconversion

不可移动的指针(地址常数)转

Notavalidexpressionformat

type

不合法的表达式格式

Notanallowedtype不允许使用的类型

Numericconstanttoolarge

数值常太大

Outofmemory

内存不够用

Parameter``xxx``isnever

used

能数xxx没有用到

Pointerrequiredonleftsideof->

符号->的左边必须是指针

Possibleuseof``xxx``beforedefinition

在定义之前就使用了xxx(警告)

Possiblyincorrectassignment赋值可能不正确

Redeclarationof``xxx``重复定义了xxx

Redefinitionof``xxx``isnotidentical

xxx的两次定义不一致

Registerallocationfailure寄存器定址失败

Repeatcountneedsanlvalue重复计数需要逻辑值

Sizeofstructureorarraynotknown

结构体或数给大小不确定

Statementmissing;

语句后缺少";"

Structureorunionsyntaxerror结构体或联合体语法错误

Structuresizetoolarge结构体尺寸太大

Subscriptingmissing]下标缺少右方括号

Superfluous&withfunctionorarray

函数或数组中有多余的"&"

Suspiciouspointerconversion可疑的指针转换

Symbollimitexceeded符号超限

Toofewparametersincall函数调用时的实参少于函数的

参数不

ToomanydefaultcasesDefault太多(switch语句中一

个)

Toomanyerrororwarningmessages

错误或警告信息太多

Toomanytypeindeclaration说明中类型太多

Toomuchautomemoryinfunction

函数用到的局部存储太多

Toomuchglobaldatadefinedinfile

文件中全局数据太多

Twoconsecutivedots

两个连续的句点

Typemismatchinparameterxxx

参数xxx类型不匹配

Typemismatchin

redeclarationof``xxx``xxx重定义的类型不匹配

Unabletocreateoutputfile``xxx``

无法建立输出文件xxx

Unabletoopenincludefile``xxx``

无法打开被包含的文件xxx

Unabletoopeninputfile``xxx``

无法打开输入文件xxx

Undefinedlabel``xxx``没有定义的标号xxx

Undefinedstructure``xxx``没有定义的结构xxx

Undefinedsymbol``xxx``没有定义的符号xxx

Unexpectedendoffileincommentstartedonlinexxx从xxx行开始的注解尚未结束文

件不能结束

Unexpectedendoffileinconditionalstartedonlinexxx从xxx开始的条件语句尚未结

束文件不能结束

Unknownassembleinstruction未知的汇编结构

Unknownoption

未知的操作

Unknownpreprocessor

directive:

``xxx``

不认识的预处理命令xxx

Unreachablecode

无路可达的代码

Unterminatedstringorcharacterconstant

字符串缺少引号

Userbreak

用户强行中断了程序

Voidfunctionsmaynotreturna

value

Void类型的函数不应有返回值

Wrongnumberofarguments调用函数的参数数目错

``xxx``notanargumentxxx不是参数

``xxx``notpartofstructure

xxx不是结构体的一部分

xxxstatementmissing(xxx语句缺少左括号

xxxstatementmissing)xxx语句缺少右括号

xxxstatementmissing;

xxx缺少分号

xxx``declaredbutneverused说明了xxx但没有使用

xxx``isassignedavaluewhichisneverused

给xxx赋了值但未用过

Zerolengthstructure

结构体的长度为零

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2