C语言编译错误信息表第1页共29页C语言编译错误信息TurboC编译程序检查源程序中三类出错信息:致命错误、一般错误和警告。致命错误出现很少,它通常是内部编译出错。在发生致命错误时,编译立即停止,必须采取一些适当的措施并重新编译。一般错误指程序的语法错误、磁盘或内存存取错误或命令错误等。编译系统遇到这类错误时,一般也要停止编译。警告并不阻止编译进行。它指出一些值得怀疑的情况,而这些情况本身又有可能合理地成为源程序的一部分。因此,警告信息只是提醒用户注意,编译过程并不停止。编译系统在发现源程序中的各类错误时,首先显示错误信息,然后显示源文件名和出错的行号。但必须注意,真正的错误位置不一定准在显示出错的行上,也可能是在前一行或前几行;有时,好象发生了很多错误,而实际上可能是由一个错误造成的。下面按字母顺序分别列出这三类错误信息。对每一条信息,提供可能产生的原因和修正的方法。致命错误1.Badcallofin-lintfunction内部函数非法调用在使用一个宏定义的内部函数时,没有正确调用。一个内部函数以双下划线(--)开始和结束。2.Irreducibleexpressiontree不可约表达式树这种错误是由于源文件中的某些表达式使得代码生成程序C语言编译错误信息表第2页共29页无法为它产生代码。这种表达式必须避免使用。3.Registcrallocationfailure存储器分配失效这种错误指的是源文件行中的表达式太复杂,代码生成程序无法为它生成代码。此时应简化这种复杂的表达式或干脆避免使用它。一般错误1.#Operatornotfollowedbymacroargumentname#运算符后无宏变量名。在宏定义中,#用于标识一宏变量名。“#”后必须跟一宏变量名。2.‘xxxxxxxx’noranargument‘xxxxxxxx’不是函数参数。在源程序中将该标识符定义为一个函数参数,但此标识符没有在函数表中出现。3.Ambiguoussymbol‘xxxxxxxx’二义性符号’xxxxxxxx’。两个或多个结构的某一域名相同,但具有的偏移,类型不同。在变量或表达式中引用该域而未带结构名时,将产生而一性,此时需修改某个域名或在引用时加上结构名。4.Argument#missingname参数#名丢失。参数名已脱离用于定义函数的函数原型。如果函数以原型定义,该函数必须包含所有的参数名。5.Argumentlistsyntaxerror参数表出现语法错误。函数调用的参数间必须以逗号隔C语言编译错误信息表第3页共29页开,并以一右括号结束。若源文件中含有一个其后不是逗号也不是右括号的参数,则出错。6.Arrayboundsmissing数组的界限符“]”丢失。在源文件中定义了一个数组,但此数组没有以一右方括号结束。7.Arraysizetoolarge数组长度太大。定义的数组太大,可用内存不够。8.Assemblerstatementtoolong汇编语句太长。内部汇编语句最长不能超过程480字节。9.Badconfigurationfile配置文件不正确。TURBOC.CFG配置文件中包含不是合适命令行选择项的非注解文字。配置文件命令选择项必须以一短横线(-)开始。10.Badfilenameformatinincludedirective使用include指令时,文件名格式不正确。include文件名必须用引号(“filename.h“)或尖括号(〈filename.h〉)括起来,否则将产生此类错误。如果使用了宏,则产生的扩展正文也不正确(因为无引号)。11.Badifdefdirectivesyntaxifdef指令语法错误。#ifdef必须包含一个标识符(不能是任何其他东西)作为该指令体。12.BadifndefdirectivesyntaxC语言编译错误信息表第4页共29页ifndef指令语法错误。#ifndef必须包含一个标识符(不能是任何其他东西)作为该指令体。13.BadundefdirectivesyntaxUndef指令语法错误。#undef指令体必须包含一个标识符(不能是任何其他东西)作为指令体。14.Badfilesizesyntax位字段长度语法错误。一个位字段必须是1-16位的表达式。15.Callofnon-function调用未定义函数。正被调用的函数无定义,通常是由于不正确的函数声明或函数名拼错造成的。16.Cannotmodifyaconstobject不能修改一个常量对象。对定义为常量的对象进行不合法操作(如常量赋值)引起此类错误。17.CaseoutsideofswitchCase出现在switch外。编译程序发现case语句出现switch语句外面,通常是由于括号不匹配造成的确。18.CasestatementmissingCase语法漏掉。Case语句必须包含一个以冒号终结的常量表达式。可能的原因是丢了冒号或在冒号前多了别的符号。19.CasesyntaxerrorC语言编译错误信息表第5页共29页Case语法错误。Case中包含了一些不正确符号。20.Characterconstanttoolong字符常量太长。字符常量只能是一个或两个字符长。21.Compoundstatementmissing复合语句漏掉了大括号“}”。编译程序扫描到源文件时。未发现结束大括号,通常是由于大括号不匹配造成的。22.Constantexpressionrequired类型修饰符冲突。对同一指针,只能指定一种变地址修饰符(如near或far);而对于同一函数,也只能出一种语言修饰符(如cdecl、passcal或interrupt)。23Constantexpressionrequired要求常量表达式。数组的大小必须是常量,此类错误通常是由于#define常量的拼写出错而引起的。24.Couldnotfind‘XXXXXXXX.XXX’找不到‘XXXXXXXX’文件。编译程序找不到命令行上给出的文件。25.Declarationmissing说明漏掉‘:’。在源文件中包含了一个struct或union域声明,但后面漏掉了分号(;)。26.Declarationneedstypeorstorageclass说明必须给出类型或存储类。说明必须包含一个类型C语言编译错误信息表第6页共29页或一个存储类。27.Declartionsyntaxerror说明出现语法错误。在源文件中,某个说明丢失了某些符号或多余的符号。28.DefaultoutsideofswitchDefault在switch外出现。编译程序发现default语句出现在switch语句之外,通常是由于括号不匹配造成的。29.DefaultdirectiveneedsanidentiferDefault指令必须有一个标识符。#define后面的第一个非空格符必须是一个标识符,若编译程序发现一些其他字符,则出现本错误。30.DivisionbyZero除数为零。源文件的常量表达式中,出现除数为零的情况。31.DostatementmusthavewhileDo语句中必须有while。源文件中包含一个无while关键字的do语句时,出现此类错误。32.Do-whilestatementmissing(Do-while语句中漏掉了“(”。在do语句中,编译程序发现while关键字后无左括号。33.Do-whilestatementmissing)Do-while语句中漏掉了“)”。在do语句中,编译程C语言编译错误信息表第7页共29页序发现条件表达式后无右括号。34.Do-whilestatementmissing;Do-while语句中漏掉了分号。在do语句中的条件表达中,编译程序发现右括号后面无分号。35.DuplicateCaseCase后的常量表达式重复。Switch语句的每个case必须有一个唯一的常量表达式值。36.EnumsyntaxerrorEnum语法出现错误。Enum说明的标识符表的格式不对。37.Eunmerationconstantsyntaxerror枚举常量语法错误。赋给enum类型变量的表达式值不为常量。38.ErrorDirective:XXXError指令:XXX。源文件处理#error指令时,显示该指令的信息。39.Errorwritingoutputfile写输出文件出现错误。通常是由于磁盘空间满造成的,尽量删掉一些不必要的文件。40.Expressionsyntax表达式语法错误。当编译程序分析一表达式发现一些严重错误时,出现此类错误,通常是由于两个连续操作C语言编译错误信息表第8页共29页符、括号不匹配或缺少括号、前一句漏掉了分号等引起的。41.Extraparameterincall调用时出现多余参数。调用函数时,其实际参数个数多余函数定义中的参数。42.Extraparameterincalltoxxxxxxxx调用XXXXXXXX函数时出现了多余的参数。其中该函数由原型定义。43.Filenametoolong文件名太长。#include指令给出的文件名太长,编译程序无法处理。DOS下的文件名不能超过64个字符。44.Forstatementmissing(For语句漏掉“(”。编译程序发现在for关键字后缺少左括号。45.Forstatementmissing)For语句缺少“)”。在for语句中编译程序发现在控制表达式后缺少右括号。46.Forstatementmissing;For语句缺少“;”。在for语句中,编译程序发现在某个表达式后缺少分号。47.Funchtioncallmissing)函数调用缺少“)”。函数调用的参数表有几种语法错C语言编译错误信息表第9页共29页误,如左括号漏掉或括号不匹配。48.Functiondefintionoutofplace函数定义位置错误。函数定义不可出现在另一函数内。函数内的任何说明,只要以类似于带有一个参数表的函数开始,就被认为是一个函数定义。49.Functiondoesn’ttakeavariablenumberofargument函数不接受可变的参数个数。源文件中的某个函数内使用了va_start宏,此函数不能接受可变数量的参数。50.GotostatementmissinglabelGoto语句缺少标号。在Goto关键字后面必须有一个标识符。51.Ifstatementmissing(If语句缺少“(”。在if语句中,编译程序发现if关键字后面缺少左括号。52.Ifstatementmissing)If语句缺少“)”。在if语句中,编译程序发现测试表达式后缺少右括号。53.Illegalcharacter’(’(0xxx)非法字符’)’(0xxx)。编译程序发现输入文件中有一些非法字符。以十六进制方式打印该字符。54.Illegalinitialization非法初始化。初始化必须是常量表达式或一全局变量C语言编译错误信息表第10页共29页extern或static的地址减一常量。55.Illegaloctaldigit非法八进制数。编译程序发现在一个八进制常数中包含了非八进制数字(8或9)。56.Illegalpointersubtraction非法指针相减。这是由于试图以一个非指针变量减去一个指针变量而造成的。57.Illegalstructureoperation非法结构操作。结构只能使用(.),取地址(&)和赋值(=)操作符,或作为函数的参数传递。当编译程序发现结构使用了其他操作时,出现此类错误。58.Illegaluseoffloatingpoint浮点运算非法。浮点运算操作数不允许出现在移位,按位逻辑操作,条件(?:),间接引用(*)以及其他一些操作符中。编译程序发现上述操作符中使用了浮点操作数时,出现此类错误。59.Illegaluseofpointer指针使用非法。指针只能在加,减,赋值,比较,间接引用(*)或