您的位置:首页 > 编程语言 > C语言/C++

C语言编译出错信息详解(初学者用) (转载)

2008-02-02 09:45 691 查看
来自:http://softbbs.pconline.com.cn/topic.jsp?tid=7353706
致命错误:
1.bad call of in-line function 内部函数非法调用
在使用一个宏定义的内部函数时,没有正确调用。一个内部函数以双下划线(__)开始和结束。
2.irrducible expression tree 不可约表达式树
这种错误是由于源文件中的某些表达式使得代码生成程序无法为它产生代码。这种表达式必须避免使用。
3.register allocation failure 存储器分配失效
这种错误指的是源文件行中的表达行听表达式太复杂,代码生成程序无法为它生成代码。此时应简化这种繁杂的表达式或干脆避免使用它。

一般错误
1.#operator not followed by macro argument name
#运算符后无宏变量名。宏定义中,#用于标识一宏变量名。"#"后必须跟一宏变量名。
2.'xxxxxx'not an argument
'xxxxxx'不是函数参数。在源程序中将该标识符定义为一个函数参数,但些标识符没有在函数表中出现。
3.ambiguous symbol 'xxxxx'
二义性符号'xxxxxx'。两个或多个结构的某一域名相同,但具有的偏移,类型不同。在变量或表达式中引用该域而未带结构名时,将产生二义性,此时需修改某个域名或在引用时加上结构名。
4.argument #missing name
参数表出现语法错误。函数调用的参数间必须以逗号隔开,并以一右括号结束。若源文件中含有一个其后不是逗号也不是右括号的参数,则出错。
5.argument list error
参数表出现语法错误。函数调用的参数必须以逗号隔开,并以一右括号结束。若源文件中含有一个其后不是逗号也不是右括号的参数,则出错。
6.array bounds missing
数组的界限符"]"丢失。
7.array size too large
数组太大。定义的数组太大,可用内存不够。
8.assembler statement too long
汇编语句太长。内部汇编语句不能超过480字节。
9.bad configuration file
配置文件不正确。turboc.cfg配置文件中包含不是合适命令行选择项的非注解文字。配置文件命令选择项必须以一短横线(-)开始。
10.bad file name format in include directive
使用include指令时,文件名格式不正确。
11.bad ifdef directive syntax
ifdef指令语法错误。#indef必须包含一个标识符(不能是任何其他东西)作为该指令体。
12.bad ifndef directive syntax
ifndef 指令语法错误。
13.ad undef directive syntax
undef 指令指令语法错误。
14.bad file size syntax
位字段长度语法错误。一个位字段必须是1-16位的常量表达式。
15.call of non-function
调用未定义函数。正被 调用的 函数未定义,通常是由于不正确的函数声明或函数名的拼写错误造成的。
16.cannot modify a const object
不能修改一个常量对象。对定义为常量的对象进行不合法操作(如常量赋值)引起此类错误。
17.case outside of switch
case 出现在switch外。编译程序发现case 语句出现 在switch语句外面,通常是由于括号不匹配造成的。
18.case statement missing
case 语句漏掉。case 语句必须包含一以冒号终结的常量表达式。可能的原因是丢了冒号或在冒号前多了别的符号。
19.case syntax error
case 语法错误。case 中包含了不正确的符号。
20.character constant too long
字符常量太长。字符常量只能是一个或两个字符长。
21.compound statement missing
复合语句漏掉了在括号"}"。
22.conflicting type modifiers
类型修饰符冲突。对同一指针,只能指定一种变址修饰符(如near 或 far );而对于同一类函数,也只能给出一种修饰符号(如cdecl,pascal 或interrupt).
23.constant expressin required
要求常量表达式。数组的大小必须是常量,此类错误通常是由于#define常量的拼写出错而引起的。
24.could not find 'xxxxxx.xxx'
找不到'xxxxxx.xxx'文件。
25.declaration missing
说明漏掉';'。
26.declaration needs type or storage class
说明必须给出类型或存储类。说明必须包含一个类型或一个存储类。
27.declartion syntax error
说明出现语法错误。
28.default outside of switch
default 在switch 外出现。
29.default directive needs an identifer
default 指令必须有一个标识符。#define后面的第一个非空格符必须是一个标识符,若编译程序发现一些其他字符,则出现本错误。
30.division by zero
除数为零。
31.do statement must have while
do语句中必须有while.
32.do-while statement missing (
do-while 语句中漏掉了"("
33.do-while statement missing )
do-while 语句中漏掉了")"
34.do-while statement missing ;
do-while 语句中漏掉了";"
35.duplicate case
case 后的常量表达式重复。
36.enum syntax error
enum 语法错误。enum说明的标识符表的格式不对。
37.enumeration constant syntax error
枚举常量语法错误。赋给enum类型变量的表达式值不为常量。
38.error directive :xxx
error 指令:xxx。源文件处理#error指令时,显示该指令的信息。
39.error writing output file
写输出文件出现错误。
40.expression syntax
表达式语法错误。当编译程序分析一表达式发现一严重错误时,出现此类错误不,通常是由于两个连续操作符,括号不匹配或缺少括号,前一语句漏掉了分号等引起的。
41.extra parameter in call
调用时出现多余的参数。
42.extra parameter in call to xxxxx
调用xxxxxx函数时出现了多余的参数。
43.file name too long
文件名太长。
44.for statement missing )
for 语句漏掉")"
45.for statement missing ;
for 语句缺少";"
46.for statement missing (
for 语句漏掉"("
47.function call missing )
函数调用缺少")"
48.function definition out of place
函数定义错误。
49.function doesn't take a variable number of argument
函数不接受可变的参数。源文件中的某个参数使用了va_start宏,此函数不能接受可变数量的参数。
50.goto statement missing label
goto 语句缺少标号。在goto关键字后面必须有一个标识符。
51.if statement missing )
if 语句 缺少 )
52.if statement missing (
if 语句 缺少 (
53.illegal character ')' (0xxxx)
非法字符'('(0xxxx)。编译程序发现输入文件中有一些非法字符。以十六进制方式打印该字符。
54. illegal initialization
非法初始化。初始化必须是常量表达式或一全局变量extern或static的地址减一常量。
55.illegal octal digit
非法八进制数。
56.illegal pointer subtraction
非法指针相减。这是由于试图以一个非指针变量减去一个指针变量而造成的。
57.illegal structure operation
非法结构操作。结构只能使用(.),取地址(&)和赋值(=)操作符,或作为函数的参数传递。当编译程序发现结构使用了其他操作符时,出现些类错误。
58.illegal use of floating point
浮点运算非法。浮点运算操作数不允许出现在移位,按位逻辑操作,条件(?:),间接引用(*)以及其他一些操作符中。编译程序发现上述操作符中使用浮点操作数时,出现此类错误。
59.illegal use of pointer
非常使用指针。指针只能在加,减,赋值,比较,间接引用(*)或箭头(—>)操作中使用。如用其他操作符,则出现此类错误。
60.improper use of a typedef symbol
typedef 符号使用不当。源文件中使用了typedef符号,变量应一个表达式中出现。检查一下此符号的说明和可能的拼写错误。
61.in-line assemble not allowed
内部汇编语句不允许。源文件中含直接插入的汇编语句,若在集成环境下进行编译,则出现此类错误。必须使用TCC命令编译此源文件。
62.incompatible storage class
不相容的存储类。源文件的函数定义中使用了extern关键字,而只有static(或根本没有存储类型)允许在函数说中出现。extern关键字只能在所有函数外说明。
63.incompatible type conversion
不相容的类型转换。源文件中试图把一种类型转换成另一种类型。但这两种类型是不相容的。如函数与非函数间转换,一种结构或数组与一种标准类型转换,浮点数和指针间转换等。
64.incorrect command line argument:xxxxxx
不正确的命令行参数:xxxxxx。编译程序认为此命令行参数是非法的。
65.incorrect configuration file argument :xxxxxx
不正确的配置文件参数:xxxxxx。编译程序认为此配置文件是非法的。检查一下前面的短横线(-)
66.incorrect number format
不正确的数据格式。编译程序发现在十六进制数中出现十进制小数点。
67.incorrect use of default
default 不正确使用。编译程序发现default关键字后缺少冒号。
68.initializer syntax error
初始化语法错误。初始化过程缺少或多了操作符,括号不匹配或其他一些不正常情况。
69.invalid indirection
无效的间接运算。间接运算操作符(*)要求非void指针作为操作分量。
70.invalid macro argument separator
无效的宏参数分隔符。在宏定义中,参数必须用逗号相隔。编译程序发现在参数名后面有其他非法字符时,出现此类错误。
71.invalid pointer addition
无效的指针相加。源程序中试图把两个指针相加。
72.invalid use of arrow
箭头使用错。在箭头(-->)操作符后必须跟一标识符。
73.invalid use of dot
点(.)操作符使用错误。在点(.)操作符后必须跟一标识符。
74.lvalue required
赋值请求。赋值操作符的左边必须是一个地址表达式,包括数值变量,指针变量,结构引用域,间接指针和数组分量。
75.marco argument syntax error
宏参数语法错误。宏定义中的参数必须是一个标识符。编译程序发现所需的参数不是标识符的字符,则出现此类错误。
76.marco expansion too long
宏扩展太长。一个宏扩展不能多于4096个字符。当宏递归扩展自身时,常出现此类错误。宏不能对自身进行扩展。
77.may complie only one file when an output file name is given
给出一个输出文件名时,可能只编译一个文件。在命令行编译中使用-O选择,只允许一个输出文件。此时,只编译第一个文件,其他文件被忽略。
78.mismatch number of parameters in definition
定义中参数个数匹配。定义中参数和函数原形中提供的信息不匹配。
79.misplaced break
break位置错误。编译程序发现break语句在switch语句或循环结构外。
80.misplaced continue
continue位置错误。编译程序发现continue语句在循环结构外。
81.misplaced else
else 位置错误。编译程序发现else语句缺少与之相匹配的if 语句。
82.misplaced decimal point
十进制小数点位置错。编译程序发现浮点数常数的指数部分有一十进制小数点。
83.misplaced elif directive
elif指令位置错。编译程序没有发现与#elif指令相匹配的#if,#ifdef或ifndef指令。
84.misplaced else directive
else指令位置错。编译程序没有发现与#else指令相匹配的#if,#ifdef或ifndef指令。
85.misplaced endif directive
endif指令位置错。编译程序没有发现与#endif指令相匹配的#if,#ifdef或ifndef指令。
86.must be addressable
必须是可编址的。取址操作符(&)作用于一个不可编址的对象,如寄存器变量。
87.must take address of memory location
必须是内存一地址。源文件中某一表达式使用了不可编址操作符(&),如对寄存器变量。
88.no file name ending
无文件名终止符。在#include语句中,文件名缺少正确的闭引号(")或尖括号(>)。
89.no file names given
未给文件名。Turboc命令编译(TCC)中没有任何文件。编译必须有一个文件。
90.Non-portable pointer assignment
对不可移植的指针赋值。源程序中的将一个指针赋给一个非指针,或相反。但作为特例,允许常量零值赋给一个指针。如果比较恰当,可以强行抑制本错误信息。
91.non-portable pointer comparison
不可移植的指针比较。源程序中一个指针和一个非指针(常量零除外)进行比较。如果比较恰当,就强行抑制本错误信息。
92.non-portable return type conversion
不可移植的返回类型转换。在返回语句中的表达式类型与函数说明中的类型不同。但如果函数的返回表达式是一指针,则可以进行转换。此时,返回指针的函数可能送回一个常量零,而零被转换成一个适当的指针值。
93.not an allowed type
不允许的类型。在源文件中说明了几种禁止了的类型,如函数返回一个函数或数组。
94.out of memory
内存不够。
95.pointer required on left side of
操作符左边须是一指针。
96.redeclaration of 'xxxxxx'
'xxxxxx'重定义。此标识符已经定义。
97.size of structure or array not known
结构或数组大小不定。有些表达式(如sizeof或存储说明)中出现一个未定义的结构或一个空长度数组。如果 结构长度不需要,在定义之前就可以引用;如果数组不申请存储空间或者初始化时给定了长度,那么就可以定义为空长。
98.statement missing
语句缺少";"。编译程序一表达式语句后面没有分号。
99.structure or union syntax error
结构或联合语法错误。编译程序发现在struct或union关键字后面没有标识符或左花括号。
100.structure size too large
结构太大。源文件中说明了一个结构,它所需的内存区域太大以致存储空间不够。
101.subscripting missing ]
下标缺少']'。
102.switch statement missing )
switch 语句缺少')'
103.switch statement missing (
switch 语句缺少'('
104.too few parameters in call
函数调用参数不够。
105.too few parameter in call to 'xxxxxx'
调用'xxxxxx'时参数不够。
106.too many cases
case 太多。switch 语句最多只能有257个case.
107.too many decimal points
十进制小数点太多。
108.too many default cases
default太多。
109.too many exponents
阶码太多。编译程序发现一个浮点常量中有不止一个的阶码。
110.too many initializers
初始化太多。编译程序发现初始经比说明所允许的要多。
111.too many storage classes in declaration
说明中存储类太多。一个说明只允许有一种存储类。
112.too many types in declaration
说明中类型太多。一个说明只一种下更基本类型:
char,int,float,double,struct,union,enum,或typedef名。
113.too much auto memory in function
函数中自动存储太多。当前函数声明的自动存储(局部变量)超过了可用的存储器空间。
114.too much code define in file
文件定义的代码太多。当前文件中函数的总长超过了64k字节。
115.too much global data define in file
文件中定义的全程数据太多。全程数据声明的总数超过了64k字节。
116.two consecutive dots
两个连续点。因为省略号包含三个点(...),而十进制小数点和选择操作符使用一个点(.),所以在C程序中出现两个连续点是不允许的。
117.type mismatch in parameter #
第#个参数类型不匹配。通过一个指令访问已由原型说明的参数时,给定第#参数(从左到右)不能转换为已说明的参数类型。
118.type mismatch in parameter # in call to 'xxxxxx'
调用'xxxxxx'时,第#个参数类型不匹配。源文件中通过一个原型说明了指定的函数,而给定的参数(从左到右)不能转换为已说明的参数类型。
119.type mismatch in parameter 'xxxxxx'
参数'xxxxxx'类型不匹配。源文件中由原型说明了一个函数指针调用的函数,而所指定的参数不能转换为说明为已说明的参数类型。
120.type mismatch in parametr 'xxxxxx' in call to 'yyyyyy'
调用'yyyyyy'时参数'xxxxxx'类型不匹配。源文件中由原型说明了一个指定的参数,而指定参数不能转换为另一个说明的参数类型。
121.type mismatch in redeclaration of 'xxx'
重定义类型不匹配。源文件中把一个已经说明的变量生新说明为另一种类型。如果一个函数被调用,而后又被调用成返回非整型值也会产生此类错误。在这种情况下,必须在第一个调用函数前,给函数加上extern说明。
122.unable to creat output file 'xxxxxx.xxx'
下能创建输出文件'xxxxxx.xxx'。当工作软盘已满或有写保护时产生此类错误。
123.unable to create turboc.lnk
不能创建turboc.lnk。编译程序不能创建临时文件turboc.lnk,因为它不能存取磁盘或才磁盘已满。
124.unable to execute command 'xxxxxx'
不能执行'xxxxxx'命令。找不到TLINK或MASM,或者磁盘出错。
125.unable to open include file'xxxxxx.xxx'
不能打开包含文件'xxxxxx.xxx'。编译程序找不到该包含文件。
126.unable to open input file 'xxxxxx.xxx'
不能打开输出文件'xxxxxx.xxx'。编译程序发现找不到源文件时出现此类错误。
127.undefined structure 'xxxxxx'
标号'xxxxxx'未定义。函数goto语句后的标号没有定义。
128.undefined structure 'xxxxxx'
结构'xxxxxx'未定义。源文件中使用了未经说明的某个结构。可能是由于结构名拼写错误或缺少结构说明而引起。
129.undefined symbol 'xxxxxx'
符号'xxxxxx'未定义。标识符无定义。可能是由于说明或引用处有拼写错误。也可能是由于标识符说明错误引起。
130.unexpected end of file in comment started on line #
源文件在第#个注释中意外结束。通过是由于注释结束标志(*/)漏掉引起。
131.unexpected end of file in conditional stated on line #
源文件在#行开始的条件语句中意外结束。在编译程序遇到#endif前源程序结束,通常是由于#endif漏掉或拼写错误引起的。
132.unknown preprocessor directive 'xxx'
不认识的预处理指令:'xxx'。编译程序在某行的开始遇到'#'字符,但其后的指令名不是下列之一:define,undef,line,if ,ifdef,ifndef,incude,esle,或endif。
133.unterminatedcharacter constant
未终结的字符常量。编译程序发现一个不匹配的省略符。
134.unterminated string
未终结的串。编译程序发现一个不匹配的引号。
135.unterminated string or character constant
未终结的串或字符常量。编译程序发现串或字符常量开始后没有终结。
136.user break
用户中断。在集成环境里进行编译或连接时用户按了Ctrl-Break键。
137.while statement missing (
while语句漏掉'('。
138.while statement missing )
while语句漏掉')'
139.wrong number of arguments in of 'xxxxxx'
调用'xxxxxx'jf 参数个数错误。源文件中调用某个宏时,参数个数不对。

警告
1.'xxxxxx'declared but never used
说了'xxxxxx'但未使用。
2.'xxxxxx'is assigned a value which is never used
'xxxxxx'被赋值,没有使此变量出现在一个赋值语句中,但直到函数结束都未使用。
3.'xxxxxx'not part of structure
'xxxxxx'不是结构的一部分。
4.ambiguous operators need parentheses
二义性操作符需要括号。当两个位移、关系、或按位操作符在一起使用而不加括号时,发出此警告;当一加法或减法操作符不加括号与一位移操作出在一起时,也出此警告。程序员总是混淆这些操作符的优先,因为它们的优先级不太直观。
5.both return and return of a value used
既用返回又用返回值。编译程序发现同时有带值返回和不带值返回的return语句,发出类警告。
6.call to function witch prototype
调用无原型函数。如果"原型请求"警告可用,且又调用了一无原型的函数,就发出此类警告。
7.call to function 'xxxx' with prototype
调用无原型'xxxx'函数。如果"原型请求"警告可用,且又调用了一个原先没有原型的函数'xxxx',就发出本警告。
8.code has no effect
代码无效。当编译程序遇到 一个含无效操作符的语句时,发出此类警告。如语句:a+b;对每一变量都不起作为,无需操作,且可能引起一个错误
9.constant is long
常量是long类型。当编译程序遇到一个十进制常量大于32767,或一个八进制常量大于65535而其后没有字母'l'或'L'时,把此常量当作long类型处理。
10.constant out of range in comparision
比较时常量超出了范围。在源文件中有一比较,其中一个常子表达式超出了另一个子表达式类型所允许的范围。如一个无符号常量跟-1比较就没有意义。为得到一大于32767(十进制)的无符号常量,可以在常量前加上unsigned(如(unsigned)65535)或在常量后加上字母'u'或'U'(如65535u)
11.conversion may lose significant digits
转换可能丢失高位数字。在赋值操作或其他情况下,源程序要求把long或unsigned long类型转换变成int或unsigned int类型。在有些机器上,因为int型和long型变量具有相同长度,这种转换可能改变程序的输出特性。
无论此警告何时发生,编译程序仍将产生代码来做比较。如果代码比较后总是给出同样的结果,比如一个字符表达式与4000比较,则代码总要进行测试。这还表示一个无符号表达式可以与-1作比较,因为8087机器上,一个无符号表达式与-1有相同的位模式。
12.function should return a value
函数应该返回一个值。源文件中说明的当前函数的返回类型既非int型也非void型,但编译程序未发现返回值。返回int型的函数可以不说明,因为在老版本的C语言中,没有void类型来指出函数不返回值。
13.mixing pointers to signed and unsigned char
混淆signed 和unsigned字符指针。没有通过显式的强制类型转换,就把一个字符指针变为无符号指针,或相反。
14.no declaration for function 'xxxxxx'
函数'xxxxxx'没有说明。
15.non-portable pointer assignment
不可移植指针赋值。源文件中把一个指针赋给另一非指针,或相反。作为特例,可以把常量零赋给一个指针。如果合适,可以强行抑制本警告。
16.non-portable return type conversion
不可移植返回类型转换。return语句中的表达式类型和函数说明的类型不一致。作为特例,如果函数或返回表达式是一个指针,这是可以的,在此情况下返回指针的函数可能返回一个常量零,被转变成一个合适的指针值。
17.non-portable pointer comparision
不可移植指针比较。源文件中把一个指针和别一非指针(非常量零)作比较。如果,可以强行抑制要警告。
18.parameter 'xxxxxx' is never used
参数'xxxxxx'没有使用。函数说明中的某参数在函数体里从未使用,这不一定是一个错误,通常是由于参数名拼写错误而引起。如果在函数体内,该标识符被重新定义为一个自动(局部)变量,也将出现此类警告。
19.possible use of 'xxxxxx' before definition
在定义'xxxxxx'之前可能已使用。源文件的某一表达式中使用了未经赋值的变量,编译程序对源文件进行简单扫描以确定此条件。如果该变量出现的物理位置在对它赋值之前,便会产生此警告,当然程序的实际流程可能在使用前已赋值。
20.possible incorrect assignment
可能的不正确赋值。当编译程序遇到赋值操作符作为条件表达式(如if,while或do-while语句一部分)的主操作符时,发出此警告,可把赋值语句用括号括起,并且把它与零作显式比较,如:if(a=b)...应写为:if(a=b)!=0)...
21.redefinition of 'xxxxxx' is not identical
'xxxxxx'重定义不相同。源文件中对命令宏重定义时,使用的正文内容与第一次定义时不同,新内容将代替旧内容。
22.restarting compiler using assembly
用汇编重新启动编译。编译程序遇到一个未使用命令行选择项-B或#prapma inline语句的asm。通过使用汇编重新启动编译。
23.structure passed by value
结构按值传送。如果设置了"结构按值传送"警告开关,则在结构为参数按值传送时产和此警告。通常是在编制程序时,把结构作为参数传递,而又漏掉了地址操作符(&)。因为结构可以按值传送,因此这种遗漏是可接受的。本警告只起一个指示作用。
24.suplerfluous & with function or array
在函数或数组中有多余的'&'号。取址操作符(&)对一个数组或函数名是不必要的应该去掉。
25.suspicious pointer conversion
值得怀疑的指针转换。编译程序遇到一些指针转换,这些转换引起指针不同的类型。如果合适,应强行抑制此类警告。
26.undefined structure 'xxxxxx'
结构'xxxxxx'未定义。在源文件中使用该结构,但未定义。可能是由于结构名拼写错误或忘记定义而引起的。
27.unknown assembler instrution
不认识的汇编指令。编译程序发现在插入的汇编语句中有一个不允许的操作码。检查此操作的拼写,并查看一下操作友表看该指令能否被接受。
28.unreachable code
不可达代码。break,continue,goto或return语句后没有跟标号循环函数的结束符。编译程序使用一个常量没试条件来检查while,do和for循环,并试图知道循环有没有失败。
29.void function may not return a value
void函数不可以返回值,源文件中的当前函数说明为void,但编译程序发现一个带值的返回语句,该返回语句的值将被忽略。
30.zero length structure
结构长度为零。在源文件中定义了一个总长度为零的结构,对此结构的任何使用都是错误的。
此帖出自:http://softbbs.pconline.com.cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: