欢迎来到天天文库
浏览记录
ID:9403676
大小:47.00 KB
页数:10页
时间:2018-04-30
《turboc编译出错信息分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、TurboC编译出错信息TurboC编译程序查出的源程序错误分为三类:严重错误、一般错误和警告。1:严重错误(fatalerror):很少出现,它通常是内部编译出错。在发生严重错误时,编译立即停止,必需采取一些适当的措施并重新编译。2:一般错误(error:指程序的语法错误以及磁盘、内存或命令行错误等。编译程序将完成现阶段的编译,然后停止。编译程序在每个阶段(预处理、语法分析、优化、代码生成将尽可能多地找出源程序中的错误。3:警告(warning:不阻止编译的继续进行。它指出一些值得怀疑的情况,而这些情况本身又可以合理地作为源程序的一部分。一旦在在源文件中使用了与
2、机器有关的结构,编译程序就会产生警告信息。编译程序首先输出这三类出错信息,然后输出源文件名和发现出错的行号,最后输出信息的内容。下面按字母顺序分别列出了这三类出错信息。对每一条信息,均指出了可能产生的原因和纠正方法。1:严重错误Badcallofinlinefunction内部函数的不合法调用;在使用一个宏定义的内部函数时,没有正确调用。一个内部函数以两个下划线(__)开始和结束。Irreducibleexpressontree不可约表达式树;文件中的表达式使得代码生成程序无法为其产生代码。应避免使用这种表达式。Registerallocationfailure存
3、储器分配失败;源文件中表达式太复杂,代码生成程序无法为它生成代码。此时应简化这种繁琐的表达式或干脆不使用它。2:一般错误:#operatornotfollowedbymacroargumentname“#”运算符后没跟宏变元名;在宏定义中,,#用来标识一宏变元串,。“#”后必须跟一宏变元名。‘xxx’notanargument“xxx”不是函数参数;在源程序中将该标识符定义为一个函数参数,但此标识符没有在函数的参数表中出现。Ambiguoussymbol‘xxx’“xxx”是歧义性符号;两个或多个结构体的某一域名(结构体变量)相同,但具有的位移、类型不同。在变量或
4、表达式引用结构体分量而未带结构名时,将产生歧义。这时需要修改某个域名或在引用时加上结构名。Argument#missingname参数#名丢失;参数名已脱离用于定义函数的函数原型。如果函数以原型定义,则该函数必须包含所有的参数名。Argumentlistsyntaxerror参数表出现语法错误;函数调用的一组参数其间必须以一逗号隔开,并以一右括号结束。若源文件中包含有一个其后不是逗号也不是右括号的参数,则出现此错。Arrayboundmissing数组的界限符“]”丢失;在源文件中定义了一个数组,但此数组没有以一右方括号结束。Arraysizetoolarge数组
5、长度过大;定义的数组太大,可用内存不够。Assemblestatementtoolong汇编语句太长;直接插入的汇编语句长度不能超过480字节。Badconfigurationfile配置文件不正确;TURBOC.CFG配置文件中包含不是合适命令行选择的非注释文字。配置文件命令选择项必须以一短横线(-)开始。Badfilenameformatinincludedirective包含命令中文件名格式不正确;包含文件名必须用引号(“*.h”)或尖括号(〈*.h〉)括起来,否则将产生此类错误。如果使用了一个宏,则产生的扩展程序文本也是不正确的(因为没有加上引号)。Bad
6、ifdef(ifndef/undef)directivesyntaxifdef(ifndef/undef)命令语法错误;#ifdef(ifndef/undef)必须以单个标识符(仅此一个)作为该命令的体。Badfilesizesyntax位字段长语法错误;一个位字段长必须是1-16位的常量表达式。Callofnon-function调用未定义函数;正确调用的函数无定义,通常是由于不正确的函数声明或函数名拼写错误引起的。Cannotmodifyaconstantobject不能修改一个常量对象;对定义为常量的对象进行不合法操作(例如常量的赋值)将引起此错误。Case
7、outsideofswitchcase出现在switch外;通常由于大括号不配对引起的。Casestatementmissing:Case语句漏掉“:”;Casesyntaxerrorcase语法错误;Characterconstanttoolong字符常量太长;字符常量只能是一个或两个字符长。Compoundstatementmissing}复合语句漏掉};通常由于花括号不配对引起的。Conflictingtypemodifiers类型修饰符冲突;对同一指针只能指定一种变址修饰符(如near或far);同样对于同一函数,也只能给出一种语言修饰符(如cdecl、p
8、ascal
此文档下载收益归作者所有