Turbo C编译出错信息分析.docx

上传人:b****0 文档编号:10129492 上传时间:2023-05-23 格式:DOCX 页数:23 大小:27.55KB
下载 相关 举报
Turbo C编译出错信息分析.docx_第1页
第1页 / 共23页
Turbo C编译出错信息分析.docx_第2页
第2页 / 共23页
Turbo C编译出错信息分析.docx_第3页
第3页 / 共23页
Turbo C编译出错信息分析.docx_第4页
第4页 / 共23页
Turbo C编译出错信息分析.docx_第5页
第5页 / 共23页
Turbo C编译出错信息分析.docx_第6页
第6页 / 共23页
Turbo C编译出错信息分析.docx_第7页
第7页 / 共23页
Turbo C编译出错信息分析.docx_第8页
第8页 / 共23页
Turbo C编译出错信息分析.docx_第9页
第9页 / 共23页
Turbo C编译出错信息分析.docx_第10页
第10页 / 共23页
Turbo C编译出错信息分析.docx_第11页
第11页 / 共23页
Turbo C编译出错信息分析.docx_第12页
第12页 / 共23页
Turbo C编译出错信息分析.docx_第13页
第13页 / 共23页
Turbo C编译出错信息分析.docx_第14页
第14页 / 共23页
Turbo C编译出错信息分析.docx_第15页
第15页 / 共23页
Turbo C编译出错信息分析.docx_第16页
第16页 / 共23页
Turbo C编译出错信息分析.docx_第17页
第17页 / 共23页
Turbo C编译出错信息分析.docx_第18页
第18页 / 共23页
Turbo C编译出错信息分析.docx_第19页
第19页 / 共23页
Turbo C编译出错信息分析.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Turbo C编译出错信息分析.docx

《Turbo C编译出错信息分析.docx》由会员分享,可在线阅读,更多相关《Turbo C编译出错信息分析.docx(23页珍藏版)》请在冰点文库上搜索。

Turbo C编译出错信息分析.docx

TurboC编译出错信息分析

TurboC编译出错信息

TurboC编译程序查出的源程序错误分为三类:

严重错误、一般错误和警告。

1:

严重错误(fatalerror):

很少出现,它通常是内部编译出错。

在发生严

重错误时,编译立即停止,必需采取一些适当的措施并重新编译。

2:

一般错误(error:

指程序的语法错误以及磁盘、内存或命令行错误等。

编译程序将完成现阶段的编译,然后停止。

编译程序在每个阶段(预处理、语法分

析、优化、代码生成将尽可能多地找出源程序中的错误。

3:

警告(warning:

不阻止编译的继续进行。

它指出一些值得怀疑的情况,

而这些情况本身又可以合理地作为源程序的一部分。

一旦在在源文件中使用了与机

器有关的结构,编译程序就会产生警告信息。

编译程序首先输出这三类出错信息,然后输出源文件名和发现出错的行号,最

后输出信息的内容。

下面按字母顺序分别列出了这三类出错信息。

对每一条信息,均指出了可能产

生的原因和纠正方法。

1:

严重错误

Badcallofinlinefunction内部函数的不合法调用;在使用一个宏定

义的内部函数时,没有正确调用。

一个内部函数以两个下划线(__)开始和结束。

Irreducibleexpressontree不可约表达式树;文件中的表达式使得代

码生成程序无法为其产生代码。

应避免使用这种表达式。

Registerallocationfailure存储器分配失败;源文件中表达式太复杂,

代码生成程序无法为它生成代码。

此时应简化这种繁琐的表达式或干脆不使用它。

2:

一般错误:

#operatornotfollowedbymacroargumentname“#”运算符后没跟宏

变元名;在宏定义中,,#用来标识一宏变元串,。

“#”后必须跟一宏变元名。

‘xxx’notanargument“xxx”不是函数参数;在源程序中将该标识符

定义为一个函数参数,但此标识符没有在函数的参数表中出现。

Ambiguoussymbol‘xxx’“xxx”是歧义性符号;两个或多个结构体的某

一域名(结构体变量)相同,但具有的位移、类型不同。

在变量或表达式引用结构

体分量而未带结构名时,将产生歧义。

这时需要修改某个域名或在引用时加上结构

名。

Argument#missingname参数#名丢失;参数名已脱离用于定义函数的

函数原型。

如果函数以原型定义,则该函数必须包含所有的参数名。

Argumentlistsyntaxerror参数表出现语法错误;函数调用的一组参数

其间必须以一逗号隔开,并以一右括号结束。

若源文件中包含有一个其后不是逗号

也不是右括号的参数,则出现此错。

Arrayboundmissing数组的界限符“]”丢失;在源文件中定义了一个数

组,但此数组没有以一右方括号结束。

Arraysizetoolarge数组长度过大;定义的数组太大,可用内存不够。

Assemblestatementtoolong汇编语句太长;直接插入的汇编语句长度

不能超过480字节。

Badconfigurationfile配置文件不正确;TURBOC.CFG配置文件中包含不

是合适命令行选择的非注释文字。

配置文件命令选择项必须以一短横线(-)开始。

Badfilenameformatinincludedirective包含命令中文件名格式不

正确;包含文件名必须用引号(“*.h”)或尖括号(〈*.h〉)括起来,否则

将产生此类错误。

如果使用了一个宏,则产生的扩展程序文本也是不正确的(因为

没有加上引号)。

Badifdef(ifndef/undef)directivesyntaxifdef(ifndef/undef)命令

语法错误;#ifdef(ifndef/undef)必须以单个标

识符(仅此一个)作为该命令的体。

Badfilesizesyntax位字段长语法错误;一个位字段长必须是1-16位的

常量表达式。

Callofnon-function调用未定义函数;正确调用的函数无定义,通常是

由于不正确的函数声明或函数名拼写错误引起的。

Cannotmodifyaconstantobject不能修改一个常量对象;对定义为常

量的对象进行不合法操作(例如常量的赋值)将引起此错误。

Caseoutsideofswitchcase出现在switch外;通常由于大括号不配对引

起的。

Casestatementmissing:

Case语句漏掉“:

”;

Casesyntaxerrorcase语法错误;

Characterconstanttoolong字符常量太长;字符常量只能是一个或两

个字符长。

Compoundstatementmissing}复合语句漏掉};通常由于花括号不配对引

起的。

Conflictingtypemodifiers类型修饰符冲突;对同一指针只能指定一种

变址修饰符(如near或far);同样对于同一函数,也只能给出一种语言修饰符(

如cdecl、pascal或interrupt)。

Constantexpressionrequired要求常量表达式;数组的大小必须是常量。

本错误通常由于#define常量的拼写错误引起的。

Couldnotfindfile‘xxx.xxx’找不到‘xxx.xxx’文件;编译程序找

不到命令行上给出的文件。

Declarationmissing;声明漏掉分号;在源文件中包含一个类型或存储类

但后面漏掉了分号。

Declarationneedstypeorstorageclass声明必须给出类型或存储类;

如声明“i,j;”是不正确的。

Declarationsyntaxerror声明出现语法错误;在源文件中,某个声明丢

失了某些符号或有多余的符号。

DefaultoutsideofswitchDefault在switch外出现;通常是由于括号不

配对引起的。

DefinedirectiveneedsanidentifierDefine命令必须有一标识符;

#define后面第一个非空格必须是一标识符。

Divisionbyzero除数为零;

Dostatementmusthavewhiledo语句中必须有while;

Do-whilestatementmissing(do-while语句漏掉了“(”;

Do-whilestatementmissing)do-while语句漏掉了“)”;

Do-whilestatementmissing;do-while语句漏掉了分号;

Duplicatecasecase的情况值不唯一;switch语句的每个case必须有一个

唯一的常量表达式。

Enumsyntaxerrorenum语法错误;赋给enum类型变量的表达式不为常量

产生本错误。

ErrorDirective:

xxxError命令:

xxx;处理源文件中的#error命令时,

显示该命令定义的信息。

Errorwritingoutputfile写输出文件错;通常是由磁盘空间引起的,

可删除某些无用文件,重新编译。

Expressionsyntax表达式语法错;通常是由于两个连续操作符、括号不

配对或缺少括号,以及前一语句漏掉了分号等引起的。

Extraparameterincall调用时出现多余参数;调用函数时,其实际参

数个数多余函数定义的参数个数。

Extraparameterincalltoxxx调用xxx函数时,出现了多余的参数;

调用一个指定函数时(该函数由原型定义)出现了过多的参数。

Filenametoolong文件名太长;#include命令给出的文件名太长,编译

程序无法处理。

DOS中的文件名不应超过64个字符。

Forstatementmissing(for语句漏掉“(”。

Forstatementmissing)for语句漏掉“)”。

Forstatementmissing;for语句漏掉“;”。

Functioncallmissing)函数调用缺少“)”。

Functiondefinitionoutofplace函数定义位置错;函数定义不可出现

在另一函数内,函数内的任何声明,只要以类似于带有一个参数表的函数开始,就

被认为是一个函数定义。

Functiondoesn'ttakeavariableofargument函数不接受可变的参数

个数;源文件中某个函数内使用了va_start宏,此函数不能接受可变数量的参数。

Gotostatementmissinglabelgoto语句缺少标号;在goto关键字后面必

须有一个标号。

Ifstatementmissing(if语句缺少“(”。

Ifstatementmissing)if语句缺少“)”。

Illegalcharacter‘c’(0xXX)非法字符‘c’(0xXX);编译程序发现

输入文件中有一些非法字符,即以十六进制形式打印的字符。

Illegalinitialization非法初始化;初始化必须是常量表达式,或是一

个全局变量extern,或是static的地址加减一常量。

Illegaloctaldigit非法八进制数。

Illegalpointersubtraction非法指针相减;这是由于试图以一个非指

针变量减去一个指针变量而造成的。

Illegalstructureoperation非法结构操作;结构只能使用(.)、取地

址(&)和赋值(=)操作符,或作为函数的参数传递。

当编译程序发现结构使用了

其它操作符时,出现此错误。

Illegaluseoffloatingpoint非法浮点运算;浮点运算分量不允许出

现在位移运算符、按位逻辑运算符、条件(?

:

)、间接(*)以及其它一些运算符

中。

编译程序发现上述运算符中使用了浮点运算分量时,出现此错误。

Illegaluseofpoint指针使用不合法;施于指针的运算符只能是加、减、

赋值、比较、间接(*)或箭头。

如用其他运算符,则出现此错误。

Improperuseofatypedefsymboltypedef符号使用不当;源文件中使

用了一个typedef符号,符号变量应出现在一个表达式中。

检查一下此符号的说和

可能的拼写错误。

In-lineassemblynotallowed不允许直接插入的汇编语句;源文件中含

有直接插入的汇编语句,若在集成环境下进行编译,则出现此错误。

必须使用TCC

命令行编译此文件。

Incompatiblestorageclass不相容的存储类;源文件的一个函数定义中

使用了extern关键字,但只有static(或根本没有存储类型)

是允许的。

Incompatibletypeconversion不相容的类型转换;例如:

函数与非函数

间转换,一种结构体或数组与一种标准类型的转换,浮点数与指针间转换等。

Incorrectcommandlineargument:

xxx不正确的命令行参数:

xxx;编译

程序视此命令行参数是非法的。

Incorrectconfigurationfileargument:

xxx不正确的配置文件参数:

xxx;检查一下前面的短横线(-)。

Incorrectnumberformat不正确的数据格式;编译程序发现在十六进制

中出现十进制小数点。

Incorrectuseofdefault使用default时错误;编译程序发现default关

键字后缺少分号。

Initializesyntaxerror初始化语句产生错误;初始化过程缺少或多出

了运算符,或出现括号不匹配及其它不正常情况。

Invalidindirection间接运算符错误;间接运算符(*)要求非空指针

作为运算分量。

Invalidmacroargumentseparator无效的宏参数分隔符;在宏定义中,

参数必须用逗号分隔。

编译程序发现参数名后面有其他非法字符时,出现此错误。

Invalidpointeraddition无效的指针相加;源程序中试图把两个指针相

加。

Invaliduseofarrow箭头使用错;箭头运算符后必须跟一个标识符。

Invaliduseofdot点使用错;在点运算符后必须跟一标识符。

Lvaluerepuired赋值请求;赋值运算符的左边必须是一个地址表达式,包

括数值变量、指针变量、结构引用域、间接指针和数组分量。

Macroargumentsyntaxerror宏参数语法错误;宏定义中的参数必须是

一个标识符。

若编译程序发现所需要的参数不是标识符的字符,出现此错误。

Macroexpansiontoolong宏扩展太长;一个宏扩展不能多于4096个字符

当宏递归扩展自身时,常出现此错误。

宏不能对自身进行扩展。

Maycompliedonlyonefilewhenanfilenameisgiven给出一个输

出文件名时,可能只编译一个文件;在命令行编译中使用-o选择,只允许一个输出

文件名。

此时,只编译第一个文件,其他文件被忽略。

Mismatchnumberofparametersindefinition函数多余中参数个数不

匹配;函数定义中的参数和函数原型中提供的信息不匹配。

Misplacedbreakbreak位置错误;编译程序发现break语句在switch语句

或循环结构之外。

Misplacedcontinuecontinue语句位置错误;编译程序发现continue语句

在循环结构之外。

Misplaceddecimalpoint十进制小数点位置错;编译程序发现浮点常数

的指数部分有一个十进制小数点。

Misplacedelseelse位置错;编译程序发现else语句缺少与之相匹配的

if语句此错误的产生,除了由于else多余外,还有可能由于多余的分号或漏写了大

括号及前面的if语句出现语法错误引起的。

Misplaceelifdirectiveelif命令位置错;编译程序找不到与#elif相匹

配的#if、#ifdef或#ifndef命令。

Misplaceelsedirectiveelse命令位置错;编译程序找不到与#else命令

相匹配的#if、#ifdef或#ifndef命令。

Misplaceendifdirectiveendif命令位置错;编译程序找不到与endif相

匹配的#if、#ifdef或#ifndef命令。

Mustbeaddressable必须是可编址的;取址操作(&)作用于一个不可

编址的对象,如寄存器变量。

Musttakeaddressofmemorylocation地址运算符(&)不可编址的表

达式源文件中对不可编址的表达式使用了地址操作符,如对寄存器变量。

Nofilenameending无文件名终止符;在#include语句中,文件名缺少

正确的毕引号(")或右尖括号(>)。

Nofilenamegiver未给出文件名;TurboC编译命令(tcc)中没有包含

文件名。

必须指定一个源文件名。

Non-portablepointerassignment不可移植指针赋值;源程序中将一个

指针赋给一个非指针或相反。

但作为特例,允许把常量零值赋给一个指针,如果合

适,应该强行抑制此错误信息。

Non-portablepointercomparison不可移植指针比较;源程序中将一个

指针和一个非指针(常量零除外)进行比较,如果合适,应强行抑制此错误信息。

Non-portablepointerconversion不可移植返回类型转换;在返回语句

中的表达式类型与函数说明中的类型不同,但如果函数的返回表达式是指针,则可

以进行转换。

此时,返回指针的函数可能送回一个常量零,而零被转换成一个适当

的指针值。

Notanallowedtype不允许的类型;在源文件中声明了几种禁止的类型,

如声明函数返回一个函数或数组。

Outofmemory内存不够;所有工作内存耗尽,应把文件放到一台有较大

内存的机器去执行或简化源程序。

Pointerrequiredonleftsideof->->操作符左边须是一个指针;在

->的左边未出现指针。

Redeclarationof“xxx”“xxx”重定义;此标识已经定义过。

Sizeofstructureorarraynotknown结构体或数组大小不确定;有些

表达式(如sizeof或存储说明)中出现一个未定义的结构体或一个空长度数组。

若结构长度不需要,则在定义之前就可引用;如果数组不申请存储空间或者初始化

时给定了长度,那么就可以定义为空长。

Statementmissing;语句缺少分号;编译程序发现一表达式语句后面没有

分号。

Structureofunionsyntaxerror结构体或共用(联合)语法错误;编

译程序发现在struct或union关键字后面没有标识符或左花括号({)。

Structuresizetoolarge结构体太大;源文件中说明了一个结构体,它

所需的内存区域太大以致内存不够。

Subscriptingmissing]下标缺少“]”;编译程序发现一个下标表达式缺

少闭方括号。

可能是由于漏掉、多写操作符或括号不匹配引起的。

Switchstatementmissing(语句缺少“(”;在switch语句中,关键字

switch后面缺少左括号。

Switchstatementmissing)语句缺少“)”;在switch语句中,测试表达

式后面缺少右括号。

Toofewparametersincall函数调用参数太少;对带有原形的函数调用

(通过一个函数指针)参数太少。

原形要求给出所有参数。

Toofewparameterincallto‘xxx’调用‘xxx’时参数太少;调用指

定的函数(该函数用一原形声明)时,给出的参数太少。

Toomanycasescase太多;switch语句最多只能有257个case。

Toomanydecimalpoints十进制小数点太多;编译程序发现一个浮点常

量中带有不止一个十进制小数点。

Toomanydefaultcasesdefault情况太多;编译程序发现一个switch语

句中有不止一个default语句。

Toomanyexponents阶码太多;编译程序发现一个浮点常量中有不止一个

阶码。

Toomanyinitializers初始化太多;编译程序发现初始化比声明所允许

的要多。

Toomanystorageclassesindeclaration声明中存储类太多;一个声

明只允许有一种存储类。

Toomanytypesindeclaration声明中类型太多;一个声明只允许有一

种下列基本类型:

char、float、int、double、struct、union、enum或typedef。

Toomuchautomemoryinfunction函数中自动存储太多;当函数声明的

自动存储超过了可用的内存空间。

Toomuchcodedefineinfile文件定义的代码太多;当前文件中函数的

总长度超过64K字节。

可以移去不必要的代码或把源文件分开来写。

Toomuchglobaldatadefineinfile文件中定义的全局数据太多;全

局数据声明的总数超过64K字节。

检查一些数组的定义是否太长。

如果所有的声明

都是必要的,考虑重新组织程序。

Twoconsecutivedots两连续点;因为省略号包含三个点,而十进制小数

点和选择运算符使用一个点,所以在C程序中出现两个连续点是不允许的。

Typemismatchinparameter#参数#类型不匹配;通过一个指针访问已

由原形说明的参数时,给定参数#N(从左到右N逐个加1)不能转换为已声明的

参数类型。

Typemismatchinparameter#incallto‘xxx’调用‘xxx’时参数类

型不匹配;源文件中通过一个原形说明了指定的函数,而给定的参数(从左到右N

逐个加1)不能转换为已说明的参数类型。

Typemismatchinparameter‘xxx’参数‘xxx’类型不匹配;源文件中

通过一个原形声明了可由函数指针调用的函数,而所指定的参数不能转换为已声明

的参数类型。

Typemismatchinparameter‘xxx’incallto‘yyy’调用‘yyy’时参

数‘xxx’不匹配;源文件中通过一个原型声明了指定的参数,而指定的参数不能转

换为另一个已声明的参数类型。

Typemismatchinredeclarationof‘xxx’重定义类型不匹配;源文件

中把一个已经声明的变量重新声明为另一类型。

如果一个函数被调用,而后又被声

明成非整形也会产生此错误。

发生这种情况时,必须在第一次调用函数前给函数加

上extern声明.

Unabletocreateoutputfile‘xxx.xxx’不能创建输出文件‘xxx.xx

x’;当工作软盘已满或有写保护时产生此错误。

如果软盘已满,则删除一些不必要

的文件后重新编译;如果软盘有写保护,则把源文件移到一个可写的软盘上并重新

编译。

Unabletocreateturboc.lnk不能创建turboc.lnk文件;编译程序

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

当前位置:首页 > 医药卫生 > 基础医学

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

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