ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:27.55KB ,
资源ID:10129492      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10129492.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Turbo C编译出错信息分析.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

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

1、Turbo C编译出错信息分析Turbo C 编译出错信息 Turbo C 编译程序查出的源程序错误分为三类:严重错误、一般错误和警告。 :严重错误(fatal error):很少出现,它通常是内部编译出错。在发生严 重错误时,编译立即停止,必需采取一些适当的措施并重新编译。 :一般错误(error :指程序的语法错误以及磁盘、内存或命令行错误等。 编译程序将完成现阶段的编译,然后停止。编译程序在每个阶段( 预处理、语法分 析、优化、代码生成 将尽可能多地找出源程序中的错误。 :警告(warning :不阻止编译的继续进行。它指出一些值得怀疑的情况, 而这些情况本身又可以合理地作为源程序的一部

2、分。一旦在在源文件中使用了与机 器有关的结构,编译程序就会产生警告信息。 编译程序首先输出这三类出错信息,然后输出源文件名和发现出错的行号,最 后输出信息的内容。 下面按字母顺序分别列出了这三类出错信息。对每一条信息,均指出了可能产 生的原因和纠正方法。 1:严重错误 Bad call of inline function 内部函数的不合法调用;在使用一个宏定 义的内部函数时,没有正确调用。一个内部函数以两个下划线(_ _)开始和结束。 Irreducible expresson tree 不可约表达式树;文件中的表达式使得代 码生成程序无法为其产生代码。应避免使用这种表达式。 Registe

3、r allocation failure 存储器分配失败;源文件中表达式太复杂, 代码生成程序无法为它生成代码。此时应简化这种繁琐的表达式或干脆不使用它。 2:一般错误: #operator not followed by macro argument name “#”运算符后没跟宏 变元名;在宏定义中,#用来标识一宏变元串,。“#”后必须跟一宏变元名。 xxxnot an argument “xxx”不是函数参数; 在源程序中将该标识符 定义为一个函数参数,但此标识符没有在函数的参数表中出现。 Ambiguous symbolxxx “xxx”是歧义性符号;两个或多个结构体的某 一域名(结构

4、体变量)相同,但具有的位移、类型不同。在变量或表达式引用结构 体分量而未带结构名时,将产生歧义。这时需要修改某个域名或在引用时加上结构 名。 Argument # missing name 参数名丢失; 参数名已脱离用于定义函数的 函数原型。如果函数以原型定义,则该函数必须包含所有的参数名。 Argument list syntax error 参数表出现语法错误;函数调用的一组参数 其间必须以一逗号隔开,并以一右括号结束。若源文件中包含有一个其后不是逗号 也不是右括号的参数,则出现此错。 Array bound missing 数组的界限符“”丢失;在源文件中定义了一个数 组,但此数组没有以

5、一右方括号结束。 Array size too large 数组长度过大;定义的数组太大,可用内存不够。 Assemble statement too long 汇编语句太长; 直接插入的汇编语句长度 不能超过480字节。 Bad configuration file 配置文件不正确;TURBOC.CFG配置文件中包含不 是合适命令行选择的非注释文字。配置文件命令选择项必须以一短横线(-)开始。 Bad file name format in include directive 包含命令中文件名格式不 正确;包含文件名必须用引号(“.”)或尖括号(.)括起来,否则 将产生此类错误。如果使用了一

6、个宏,则产生的扩展程序文本也是不正确的(因为 没有加上引号)。 Bad ifdef(ifndef/undef) directive syntax ifdef(ifndef/undef)命令 语法错误;ifdef(ifndef/undef)必须以单个标 识符(仅此一个)作为该命令的体。 Bad file size syntax 位字段长语法错误;一个位字段长必须是1-16位的 常量表达式。 Call of non-function 调用未定义函数;正确调用的函数无定义,通常是 由于不正确的函数声明或函数名拼写错误引起的。 Cannot modify a constant object 不能修改一

7、个常量对象; 对定义为常 量的对象进行不合法操作(例如常量的赋值)将引起此错误。 Case outside of switch case出现在switch外;通常由于大括号不配对引 起的。 Case statement missing: Case语句漏掉“:”; Case syntax error case语法错误; Character constant too long 字符常量太长;字符常量只能是一个或两 个字符长。 Compound statement missing 复合语句漏掉;通常由于花括号不配对引 起的。 Conflicting type modifiers 类型修饰符冲突;对同

8、一指针只能指定一种 变址修饰符(如near或far);同样对于同一函数, 也只能给出一种语言修饰符( 如cdecl、pascal或interrupt)。 Constant expression required 要求常量表达式;数组的大小必须是常量。 本错误通常由于#define常量的拼写错误引起的。 Could not find filexxx.xxx 找不到xxx.xxx文件; 编译程序找 不到命令行上给出的文件。 Declaration missing; 声明漏掉分号;在源文件中包含一个类型或存储类 但后面漏掉了分号。 Declaration needs type or storage

9、class 声明必须给出类型或存储类; 如声明“i,j;”是不正确的。 Declaration syntax error 声明出现语法错误;在源文件中,某个声明丢 失了某些符号或有多余的符号。 Default outside of switch Default在switch外出现;通常是由于括号不 配对引起的。 Define directive needs an identifier Define 命令必须有一标识符; #define后面第一个非空格必须是一标识符。 Division by zero 除数为零; Do statement must have while do语句中必须有whil

10、e; Do-while statement missing( do-while语句漏掉了“(”; Do-while statement missing) do-while语句漏掉了“)”; Do-while statement missing; do-while语句漏掉了分号; Duplicate case case的情况值不唯一;switch语句的每个case必须有一个 唯一的常量表达式。 Enum syntax error enum语法错误;赋给enum 类型变量的表达式不为常量 产生本错误。 Error Directive:xxx Error命令:xxx;处理源文件中的#error命令时

11、, 显示该命令定义的信息。 Error writing output file 写输出文件错;通常是由磁盘空间引起的, 可删除某些无用文件,重新编译。 Expression syntax 表达式语法错;通常是由于两个连续操作符、 括号不 配对或缺少括号,以及前一语句漏掉了分号等引起的。 Extra parameter in call 调用时出现多余参数;调用函数时,其实际参 数个数多余函数定义的参数个数。 Extra parameter in call to xxx 调用xxx函数时,出现了多余的参数; 调用一个指定函数时(该函数由原型定义)出现了过多的参数。 File name too lo

12、ng 文件名太长;#include命令给出的文件名太长,编译 程序无法处理。DOS中的文件名不应超过64个字符。 For statement missing( for语句漏掉“(”。 For statement missing) for语句漏掉“)”。 For statement missing; for语句漏掉“;”。 Function call missing) 函数调用缺少“)”。 Function definition out of place 函数定义位置错;函数定义不可出现 在另一函数内,函数内的任何声明,只要以类似于带有一个参数表的函数开始,就 被认为是一个函数定义。 Funct

13、ion doesnt take a variable of argument 函数不接受可变的参数 个数;源文件中某个函数内使用了va_start宏,此函数不能接受可变数量的参数。 Goto statement missing label goto语句缺少标号;在goto关键字后面必 须有一个标号。 If statement missing( if语句缺少“(”。 If statement missing) if语句缺少“)”。 Illegal character c(0xXX) 非法字符c(0xXX);编译程序发现 输入文件中有一些非法字符,即以十六进制形式打印的字符。 Illegal in

14、itialization 非法初始化;初始化必须是常量表达式,或是一 个全局变量extern,或是static的地址加减一常量。 Illegal octal digit 非法八进制数。 Illegal pointer subtraction 非法指针相减; 这是由于试图以一个非指 针变量减去一个指针变量而造成的。 Illegal structure operation 非法结构操作;结构只能使用(.)、取地 址(&)和赋值(=)操作符,或作为函数的参数传递。当编译程序发现结构使用了 其它操作符时,出现此错误。 Illegal use of floating point 非法浮点运算; 浮点运算

15、分量不允许出 现在位移运算符、按位逻辑运算符、条件(? :)、间接(*)以及其它一些运算符 中。编译程序发现上述运算符中使用了浮点运算分量时,出现此错误。 Illegal use of point 指针使用不合法;施于指针的运算符只能是加、减、 赋值、比较、间接(*)或箭头。如用其他运算符,则出现此错误。 Improper use of a typedef symbol typedef符号使用不当; 源文件中使 用了一个typedef符号,符号变量应出现在一个表达式中。 检查一下此符号的说和 可能的拼写错误。 In-line assembly not allowed 不允许直接插入的汇编语句;

16、源文件中含 有直接插入的汇编语句,若在集成环境下进行编译,则出现此错误。 必须使用TCC 命令行编译此文件。 Incompatible storage class 不相容的存储类;源文件的一个函数定义中 使用了extern关键字,但只有static(或根本没有存储类型) 是允许的。 Incompatible type conversion 不相容的类型转换;例如:函数与非函数 间转换,一种结构体或数组与一种标准类型的转换,浮点数与指针间转换等。 Incorrect command line argument:xxx 不正确的命令行参数:xxx;编译 程序视此命令行参数是非法的。 Incorre

17、ct configuration file argument:xxx 不正确的配置文件参数: xxx;检查一下前面的短横线(-)。 Incorrect number format 不正确的数据格式; 编译程序发现在十六进制 中出现十进制小数点。 Incorrect use of default 使用default时错误;编译程序发现default关 键字后缺少分号。 Initialize syntax error 初始化语句产生错误; 初始化过程缺少或多出 了运算符,或出现括号不匹配及其它不正常情况。 Invalid indirection 间接运算符错误; 间接运算符(*)要求非空指针 作为

18、运算分量。 Invalid macro argument separator 无效的宏参数分隔符;在宏定义中, 参数必须用逗号分隔。编译程序发现参数名后面有其他非法字符时,出现此错误。 Invalid pointer addition 无效的指针相加;源程序中试图把两个指针相 加。 Invalid use of arrow 箭头使用错;箭头运算符后必须跟一个标识符。 Invalid use of dot 点使用错;在点运算符后必须跟一标识符。 Lvalue repuired 赋值请求;赋值运算符的左边必须是一个地址表达式,包 括数值变量、指针变量、结构引用域、间接指针和数组分量。 Macro

19、argument syntax error 宏参数语法错误; 宏定义中的参数必须是 一个标识符。若编译程序发现所需要的参数不是标识符的字符,出现此错误。 Macro expansion too long 宏扩展太长;一个宏扩展不能多于4096个字符 当宏递归扩展自身时,常出现此错误。宏不能对自身进行扩展。 May complied only one file when an file name is given 给出一个输 出文件名时,可能只编译一个文件;在命令行编译中使用-o选择,只允许一个输出 文件名。此时,只编译第一个文件,其他文件被忽略。 Mismatch number of para

20、meters in definition 函数多余中参数个数不 匹配;函数定义中的参数和函数原型中提供的信息不匹配。 Misplaced break break位置错误;编译程序发现break语句在switch语句 或循环结构之外。 Misplaced continue continue语句位置错误;编译程序发现continue语句 在循环结构之外。 Misplaced decimal point 十进制小数点位置错; 编译程序发现浮点常数 的指数部分有一个十进制小数点。 Misplaced else else位置错; 编译程序发现else 语句缺少与之相匹配的 if语句此错误的产生,除了由于

21、else多余外,还有可能由于多余的分号或漏写了大 括号及前面的if语句出现语法错误引起的。 Misplace elif directive elif命令位置错;编译程序找不到与#elif相匹 配的#if、#ifdef或#ifndef命令。 Misplace else directive else命令位置错;编译程序找不到与#else命令 相匹配的#if、#ifdef或#ifndef命令。 Misplace endif directive endif命令位置错;编译程序找不到与endif相 匹配的#if、#ifdef或#ifndef命令。 Must be addressable 必须是可编址的;

22、 取址操作(& )作用于一个不可 编址的对象,如寄存器变量。 Must take address of memory location 地址运算符(&)不可编址的表 达式源文件中对不可编址的表达式使用了地址操作符,如对寄存器变量。 No file name ending 无文件名终止符;在#include语句中, 文件名缺少 正确的毕引号()或右尖括号()。 No file name giver 未给出文件名;Turbo C编译命令(tcc)中没有包含 文件名。必须指定一个源文件名。 Non-portable pointer assignment 不可移植指针赋值; 源程序中将一个 指针赋给一

23、个非指针或相反。但作为特例,允许把常量零值赋给一个指针,如果合 适,应该强行抑制此错误信息。 Non-portable pointer comparison 不可移植指针比较; 源程序中将一个 指针和一个非指针(常量零除外)进行比较,如果合适,应强行抑制此错误信息。 Non-portable pointer conversion 不可移植返回类型转换; 在返回语句 中的表达式类型与函数说明中的类型不同,但如果函数的返回表达式是指针,则可 以进行转换。此时,返回指针的函数可能送回一个常量零,而零被转换成一个适当 的指针值。 Not an allowed type 不允许的类型;在源文件中声明了几

24、种禁止的类型, 如声明函数返回一个函数或数组。 Out of memory 内存不够;所有工作内存耗尽, 应把文件放到一台有较大 内存的机器去执行或简化源程序。 Pointer required on left side of - 操作符左边须是一个指针;在 的左边未出现指针。 Redeclaration of“xxx” “xxx”重定义;此标识已经定义过。 Size of structure or array not known 结构体或数组大小不确定;有些 表达式(如size of或存储说明) 中出现一个未定义的结构体或一个空长度数组。 若结构长度不需要,则在定义之前就可引用;如果数组不申

25、请存储空间或者初始化 时给定了长度,那么就可以定义为空长。 Statement missing; 语句缺少分号;编译程序发现一表达式语句后面没有 分号。 Structure of union syntax error 结构体或共用(联合)语法错误; 编 译程序发现在struct或union关键字后面没有标识符或左花括号()。 Structure size too large 结构体太大;源文件中说明了一个结构体,它 所需的内存区域太大以致内存不够。 Subscripting missing 下标缺少“”;编译程序发现一个下标表达式缺 少闭方括号。可能是由于漏掉、多写操作符或括号不匹配引起的。

26、Switch statement missing( 语句缺少“(”; 在switch 语句中, 关键字 switch后面缺少左括号。 Switch statement missing) 语句缺少“)”;在switch语句中, 测试表达 式后面缺少右括号。 Too few parameters in call 函数调用参数太少;对带有原形的函数调用 (通过一个函数指针)参数太少。原形要求给出所有参数。 Too few parameter in call toxxx 调用xxx时参数太少;调用指 定的函数(该函数用一原形声明)时,给出的参数太少。 Too many cases case太多;swi

27、tch语句最多只能有257个case。 Too many decimal points 十进制小数点太多; 编译程序发现一个浮点常 量中带有不止一个十进制小数点。 Too many default cases default情况太多;编译程序发现一个switch 语 句中有不止一个default语句。 Too many exponents 阶码太多;编译程序发现一个浮点常量中有不止一个 阶码。 Too many initializers 初始化太多; 编译程序发现初始化比声明所允许 的要多。 Too many storage classes in declaration 声明中存储类太多; 一

28、个声 明只允许有一种存储类。 Too many types in declaration 声明中类型太多; 一个声明只允许有一 种下列基本类型:char、float、int、double、struct、union、enum或typedef。 Too much auto memory in function 函数中自动存储太多;当函数声明的 自动存储超过了可用的内存空间。 Too much code define in file 文件定义的代码太多;当前文件中函数的 总长度超过64K字节。可以移去不必要的代码或把源文件分开来写。 Too much global data define in fi

29、le 文件中定义的全局数据太多; 全 局数据声明的总数超过64K字节。检查一些数组的定义是否太长。 如果所有的声明 都是必要的,考虑重新组织程序。 Two consecutive dots 两连续点;因为省略号包含三个点,而十进制小数 点和选择运算符使用一个点,所以在C程序中出现两个连续点是不允许的。 Type mismatch in parameter # 参数类型不匹配;通过一个指针访问已 由原形说明的参数时,给定参数 (从左到右逐个加1)不能转换为已声明的 参数类型。 Type mismatch in parameter # incall toxxx 调用xxx 时参数类 型不匹配;源文

30、件中通过一个原形说明了指定的函数,而给定的参数(从左到右 逐个加1)不能转换为已说明的参数类型。 Type mismatch in parameterxxx 参数xxx类型不匹配;源文件中 通过一个原形声明了可由函数指针调用的函数,而所指定的参数不能转换为已声明 的参数类型。 Type mismatch in parameterxxxin call toyyy 调用yyy时参 数xxx不匹配;源文件中通过一个原型声明了指定的参数,而指定的参数不能转 换为另一个已声明的参数类型。 Type mismatch in redeclaration ofxxx 重定义类型不匹配;源文件 中把一个已经声明的变量重新声明为另一类型。如果一个函数被调用,而后又被声 明成非整形也会产生此错误。发生这种情况时,必须在第一次调用函数前给函数加 上extern声明. Unable to create output filexxx.xxx 不能创建输出文件xxx. xx x;当工作软盘已满或有写保护时产生此错误。如果软盘已满,则删除一些不必要 的文件后重新编译;如果软盘有写保护,则把源文件移到一个可写的软盘上并重新 编译。 Unable to create turboc.lnk 不能创建turboc.lnk文件; 编译程序

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

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