c语言源程序常见错误分类及其改错Word下载.doc
《c语言源程序常见错误分类及其改错Word下载.doc》由会员分享,可在线阅读,更多相关《c语言源程序常见错误分类及其改错Word下载.doc(22页珍藏版)》请在冰点文库上搜索。
’xxxxxx’不是函数参数。
在源程序中将该标识符定义为一个函数参数,但此标识符没有在函数表中出现。
3.Ambiguoussymbol’xxxxxx’
二义性符号’xxxxxx’。
两个或多个结构的某一域名相同,但具有的偏移、类型不同。
在变量或表达式中引用该域而未带结构名时,将产生二义性,此时需修改某个域名或在引用时加上结构名。
4.Argument#missingname
参数#名丢失。
参数名已脱离用于定义函数的函数原型。
如果函数以原型定义,该函数必须包含所有的参数名。
5.Argumentlistsyntaxerror
函数表出现语法错误。
函数调用的参数间必须以逗号隔开,并以一右括号结束。
若源文件中含有一个其后不是逗号也不是右括号的参数,则出错。
6.Arrayboundsmissing
数组的界限符“]”丢失。
在源文件中定义了一个数组,但此数组没有以一右方括号结束。
7.Arraysizetoolarge
数组长度太大。
定义的数组太大,可用内存不够。
8.Assemblerstatementtoolong
汇编语句太长。
内部汇编语句最长不能超过480字节。
9.Badconfigurationfile
配置文件不正确。
TURBOC.CFG配置文件中包含不是合适命令行选择项的非注解文字。
配置文件命令选择项必须以一短横线(-)开始。
10.Badfilenameformatinincludedirective
使用include指令时,文件名格式不正确。
include文件名必须用引号(“filename.h”)或尖括号(<
filename.h>
)括起来,否则将产生此类错误。
如果使用了宏,则产生的扩展正文也不正确(因为无引号)。
11.Badifdefdirectivesyntax
ifdef指令语法错误。
#ifdef必须包含一个标识符(不能是任何其他东西)作为该指令体。
12.Badifndefdirectivesyntax
ifndef指令语法错误。
#ifndef必须包含一个标识符(不能是任何其他东西)作为该指令体。
13.Badundefdirectivesyntax
undef指令语法错误。
#undef指令必须包含一个标识符(不能是任何其他东西)作为该指令体。
14.Badfilesizesyntax
位字段长度语法错误。
一个位字段必须是1-16位的常量表达式。
15.Callofnon-function
调用未定义函数。
正被调用的函数无定义,通常是由于不正确的函数声明或函数名拼错造成的。
16.Cannotmodifyaconstobject
不能修改一个常量对象。
对定义为常量的对象进行不合法操作(如常量赋值)引起此类错误。
17.Caseoutsideofswitch
Case出现在switch外。
编译程序发现Case语句出现在switch语句外面,通常是由于括号不匹配造成的。
18.Casestatementmissing
Case语句漏掉。
Case语句必须包含一以冒号终结的常量表达式。
可能的原因是丢了冒号或在冒号前多了别的符号。
19.Casesyntaxerror
Case语法错误。
Case中包含了一些不正确符号。
20.Characterconstanttoolong
字符常量太长。
字符常量只能是一个或两个字符长。
21.Compoundstatementmissing
复合语句漏掉了大括号“}”。
编译程序扫描到源文件末时。
未发现结束大括号,通常是由于大括号不匹配造成的。
22.Conflictingtypemodifiers
类型修饰符冲突。
对同一指针,只能指定一种变址修饰符(如near或far);
而对于同一函数,也只能给出一种语言修饰符(如cdecl、pascal或interrupt)。
23.Constantexpressionrequired
要求常量表达式。
数组的大小必须是常量,此类错误通常是由于#define常量的拼写出错而引起的。
24.Couldnotfind‘xxxxxxxx.xxx’
找不到‘xxxxxxxx’文件。
编译程序找不到命令行上给出的文件。
25.Declarationmissing
说明漏掉‘;
’。
在源文件中包含了一个struct或union域声明,但后面漏掉了分号(;
)。
26.Declarationneedstypeorstorageclass
说明必须给出类型或存储类。
说明必须包含一个类型或一个存储类。
27.Declarationsyntaxerror
说明出现语法错误。
在源文件中,某个说明丢失了某些符号或有多余的符号。
28.Defaultoutsideofswitch
Default在switch外出现。
编译程序发现default语句出现在switch语句之外,通常是由于括号不匹配造成的。
29.Defaultdirectiveneedsanidentifer
Default指令必须有一个标识符。
#define后面的第一个非空格符必须是一个标识符,若编译程序发现一些其他字符,则出现本错误。
30.DivisionbyZero
除数为零。
源文件的常量表达式中,出现除数为零的情况。
31.Dostatementmusthavewhile
Do语句中必须有while。
源文件中包含一个无while关键字的do语句时,出现此类错误。
32.Do-whilestatementmissing(
Do-while语句中漏掉了“(”。
在do语句中,编译程序发现while关键字后无左括号。
33.Do-whilestatementmissing)
Do-while语句中漏掉了“)”。
在do语句中,编译程序发现while关键字后无右括号。
34.Do-whilestatementmissing;
Do-while语句中漏掉了分号。
在do语句中的条件表达式中,编译程序发现右括号后面无分号。
35.DuplicateCase
Case后的常量表达式重复。
switch语句的每个case必须有一个唯一的常量表达式值。
36.Enumsyntaxerror
Enum语法出现错误。
enum说明的标识符表的格式不对。
37.Enumerationconstantsyntaxerror
枚举常量语法错误。
赋给enum类型变量的表达式值不为常量。
38.ErrorDirective:
xxx
Error指令:
xxx。
源文件处理#error指令时,显示该指令的信息。
39.Errorwritingoutputfile
写输出文件出现错误。
通常是由于磁盘空间满造成的,尽量删掉一些不必要的文件。
40.Expressionsyntax
表达式语法错误。
当编译程序分析一表达式发现一些严重错误时,出现此类错误,通常是由于两个连续操作符、括号不匹配或缺少括号、前一语句漏掉了分号等引起的。
41.Extraparameterincall
调用时出现多余参数。
调用函数时,其实际参数个数多于函数定义中的参数个数。
42.Extraparameterincalltoxxxxxxxx
调用xxxxxxxx函数时出现了多余的参数。
其中该函数由原型定义。
43.Filenametoolong
文件名太长。
#include指令给出的文件名太长,编译程序无法处理。
DOS下的文件名不能超过64个字符。
44.Forstatementmissing(
For语句漏掉“(”。
编译程序发现在for关键字后缺少左括号。
45.Forstatementmissing)
For语句漏掉“)”。
在for语句中,编译程序发现在控制表达式后缺少右括号。
46.Forstatementmissing;
For语句缺少“;
”。
在for语句中,编译程序发现在某个表达式后缺少分号。
47.Functioncallmissing)
函数调用缺少“)”。
函数调用的参数表有几种语法错误,如左括号漏掉或括号不匹配。
48.Functiondefinitionoutofplace
函数定义位置错误。
函数定义不可出现在另一函数内。
函数内的任何说明,只要以类似于带有一个参数表的函数开始,就被认为是一个函数定义。
49.Functiondoesn’ttakeavariablenumberofargument
函数不接受可变的参数个数。
源文件中的某个函数内使用了va_start宏,此函数不能接受可变数量的参数。
50.Gotostatementmissinglabel
Goto语句缺少标号。
在goto关键字后面必须有一个标识符。
51.Ifstatementmissing(
If语句缺少“(”。
在if语句中,编译程序发现if关键字后面缺少左括号。
52.Ifstatementmissing)
If语句缺少“)”。
在if语句中,编译程序发现测试表达式后缺少右括号。
53.Illegalcharacter‘)’(0xxx)
非法字符‘)’(0xxx)。
编译程序发现输入文件中有一些非法字符。
以十六进制方式打印该字符。
54.Illegalinitialization
非法初始化。
初始化必须是常量表达式或一全局变量extern或static的地址减一常量。
55.Illegaloctaldigit
非法八进制数。
编译程序发现在一个八进制常数中包含了非八进制数字(8或9)。
56.Illegalpointersubtraction
非法指针相减。
这是由于试图以一个非指针变量减去一个指针变量而造成的。
57.Illegalstructureoperation
非法结构操作。
结构只能使用(.)、取地址(&
)和赋值(=)操作符,或作为函数的参数传递。
当编译程序发现结构使用了其他操作符时,出现此类错误。
58.Illegaluseoffloatingpoint
浮点运算非法。
浮点运算操作数不允许出现在移位、按位逻辑操作、条件(?
:
),间接引用(*)以及其他一些操作符中。
编译程序发现上述操作符中使用了浮点操作数时,出现此类错误。
59.Illegaluseofpointer
指针使用非法。
指针只能在加、减、赋值、比较、间接引用(*)或箭头(→)操作中使用。
如用其他操作符,则出现此类错误。
60.Improperuseofatypedefsymbol
typedef符号使用不当。
源文件中使用了typedef符号,变量应在一个表达式中出现。
检查一下此符号的说明和可能的拼写错误。
61.In-lineassemblynotallowed
内部汇编语句不允许。
源文件中含有直接插入的汇编语句,若在集成环境下进行编译,则出现此类错误。
必须使用TCC命令行编译此源文件。
62.Incompatiblestorageclass
不相容的存储类。
源文件的一个函数定义中使用了extern关键字,而只有static(或根本没有存储类型)允许在函数说明中出现。
extern关键字只能在所有函数外说明。
63.Incompatibletypeconversion
不相容的类型转换。
源文件中试图把一种类型转换成另一种类型。
但这两种类型是不相容的。
如函数与非函数间转换,一种结构或数组与一种标准类型转换、浮点数和指针间转换等。
64.Incorrectcommandlineargument:
xxxxxxxx
不正确的命令行参数:
xxxxxxxx。
编译程序认为此命令行参数是非法的。
65.Incorrectconfigurationfileargument:
不正确的配置文件参数:
编译程序认为此配置文件是非法的。
检查一下前面的短横线(-)。
66.Incorrectnumberformat
不正确的数据格式。
编译程序发现在十六进制数中出现十进制小数点。
67.Incorrectuseofdefault
default使用不正确。
编译程序发现default关键字后缺少冒号。
68.Initializersyntaxerror
初始化语法错误。
初始化过程缺少或多了操作符,括号不匹配或其他一些不正常情况。
69.Invalidindirection
无效的间接运算。
间接运算操作符(*)要求非void指针作为操作分量。
70.Invalidmacroargumentseparator
无效的宏参数分隔符。
在宏定义中,参数必须用逗号相隔。
编译程序发现在参数名后面有其他非法字符时,出现此类错误。
71.Invalidpointeraddition
无效的指针相加。
源程序中试图把两个指针相加。
72.Invaliduseofarrow
箭头使用错。
在箭头(→)操作符后必须跟一标识符。
73.Invaliduseofdot
点(.)操作符使用错。
在点(.)操作符后必须跟一标识符。
74.Lvaluerequired
赋值请求。
赋值操作符的左边必须是一个地址表达式,包括数值变量、指针变量、结构引用域、间接指针和数组分量。
75.Macroargumentsyntaxerror
宏参数语法错误。
宏定义中的参数必须是一个标识符。
编译程序发现所需的参数不是标识符的字符,则出现此类错误。
76.Macroexpansiontoolong
宏扩展太长。
一个宏扩展不能多于4096个字符。
当宏递归扩展自身时,常出现此类错误。
宏不能对自身进行扩展。
77.Maycompileonlyonefilewhenanoutputfilenameisgiven
给出一个输出文件名时,可能只编译一个文件。
在命令行编译中使用-O选择,只允许一个输出文件名。
此时,只编译第一个文件,其他文件被忽略。
78.Mismatchnumberofparametersindefinition
定义中参数个数不匹配。
定义中的参数和函数原型中提供的信息不匹配。
79.Misplacedbreak
break位置错误。
编译程序发现break语句在switch语句或循环结构外。
80.Misplacedcontinue
continue位置错误。
编译程序发现continue语句在循环结构外。
81.Misplaceddecimalpoint
十进制小数点位置错。
编译程序发现浮点常数的指数部分有一个十进制小数点。
82.Misplacedelse
else位置错误。
编译程序发现else语句缺少与之相匹配的if语句。
此类错误的产生,除了由于else多余外,还有可能是由于有多余的分号、漏写了大括号或前面的if语句出现语法错误而引起。
83.Misplacedelifdirective
elif指令位置错。
编译程序没有发现与#elif指令相匹配的#if、#ifdef或#ifndef指令。
84.Misplacedelsedirective
else指令位置错。
编译程序没有发现与#else指令相匹配的#if、#ifdef或#ifndef指令。
85.Misplacedendifdirective
endif指令位置错。
编译程序没有发现与#endif指令相匹配的#if、#ifdef或#ifndef指令。
86.Mustbeaddressable
必须是可编址的。
取址操作符(&
)作用于一个不可编址的对象,如寄存器变量。
87.Musttakeaddressofmemorylocation
必须是内存一地址。
源文件中某一表达式使用了不可编地址操作符(&
),如对寄存器变量。
88.Nofilenameending
无文件名终止符。
在#include语句中,文件名缺少正确的闭引号(”)或尖括号(>
89.Nofilenamesgiven
未给出文件名。
Turbo命令行编译(TCC)中没有任何文件。
编译必须有一文件。
90.Non-portablepointerassignment
对不可移植的指针赋值。
源程序中将一个指针赋给一个非指针,或相反。
但作为特例,允许把常量零值赋给一个指针。
如果比较恰当,可以强行抑制本错误信息。
91.Non-portablepointercomparison
不可移植的指针比较。
源程序中将一个指针和一个非指针(常量零除外)进行比较。
如果比较恰当,应强行抑制本错误信息。
92.Non-portablereturntypeconversion
不可移植的返回类型转换。
在返回语句中的表达式类型与函数说明中的类型不同。
但如果函数的返回表达式是一指针,则可以进行转换。
此时,返回指针的函数可能送回一个常量零,而零被转换成一个适当的指针值。
93.Notanallowedtype
不允许的类型。
在源文件中说明了几种禁止了的类型,如函数返回一个函数或数组。
94.Outofmemory
内存不够。
所有工作内存用完,应