Turbo C出错信息 全面解释
来源:百度文库 编辑:神马文学网 时间:2024/04/29 05:00:22
Turbo C 编译出错信息
Turbo C 编译程序查出的源程序错误分为三类:严重错误、一般错误和警告。
1:严重错误(fatal error):很少出现,它通常是内部编译出错。在发生严
重错误时,编译立即停止,必需采取一些适当的措施并重新编译。
2:一般错误(error ):指程序的语法错误以及磁盘、内存或命令行错误等。
编译程序将完成现阶段的编译,然后停止。编译程序在每个阶段( 预处理、语法分
析、优化、代码生成 )将尽可能多地找出源程序中的错误。
3:警告(warning ):不阻止编译的继续进行。它指出一些值得怀疑的情况,
而这些情况本身又可以合理地作为源程序的一部分。一旦在在源文件中使用了与机
器有关的结构,编译程序就会产生警告信息。
编译程序首先输出这三类出错信息,然后输出源文件名和发现出错的行号,最
后输出信息的内容。
下面按字母顺序分别列出了这三类出错信息。对每一条信息,均指出了可能产
生的原因和纠正方法。
1:严重错误
Bad call of inline function 内部函数的不合法调用;在使用一个宏定
义的内部函数时,没有正确调用。一个内部函数以两个下划线(_ _)开始和结束。
Irreducible expresson tree 不可约表达式树;文件中的表达式使得代
码生成程序无法为其产生代码。应避免使用这种表达式。
Register allocation failure 存储器分配失败;源文件中表达式太复杂,
代码生成程序无法为它生成代码。此时应简化这种繁琐的表达式或干脆不使用它。
2:一般错误:
#operator not followed by macro argument name “#”运算符后没跟宏
变元名;在宏定义中,,#用来标识一宏变元串,。“#”后必须跟一宏变元名。
‘xxx’not an argument “xxx”不是函数参数; 在源程序中将该标识符
定义为一个函数参数,但此标识符没有在函数的参数表中出现。
Ambiguous symbol‘xxx’ “xxx”是歧义性符号;两个或多个结构体的某
一域名(结构体变量)相同,但具有的位移、类型不同。在变量或表达式引用结构
体分量而未带结构名时,将产生歧义。这时需要修改某个域名或在引用时加上结构
名。
Argument # missing name 参数#名丢失; 参数名已脱离用于定义函数的
函数原型。如果函数以原型定义,则该函数必须包含所有的参数名。
Argument list syntax error 参数表出现语法错误;函数调用的一组参数
其间必须以一逗号隔开,并以一右括号结束。若源文件中包含有一个其后不是逗号
也不是右括号的参数,则出现此错。
Array bound missing 数组的界限符“]”丢失;在源文件中定义了一个数
组,但此数组没有以一右方括号结束。
Array size too large 数组长度过大;定义的数组太大,可用内存不够。
Assemble statement too long 汇编语句太长; 直接插入的汇编语句长度
不能超过480字节。
Bad configuration file 配置文件不正确;TURBOC.CFG配置文件中包含不
是合适命令行选择的非注释文字。配置文件命令选择项必须以一短横线(-)开始。
Bad file name format in include directive 包含命令中文件名格式不
正确;包含文件名必须用引号(“*.h”)或尖括号(〈*.h〉)括起来,否则
将产生此类错误。如果使用了一个宏,则产生的扩展程序文本也是不正确的(因为
没有加上引号)。
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 不能修改一个常量对象; 对定义为常
量的对象进行不合法操作(例如常量的赋值)将引起此错误。
Case outside of switch case出现在switch外;通常由于大括号不配对引
起的。
Case statement missing: Case语句漏掉“:”;
Case syntax error case语法错误;
Character constant too long 字符常量太长;字符常量只能是一个或两
个字符长。
Compound statement missing} 复合语句漏掉};通常由于花括号不配对引
起的。
Conflicting type modifiers 类型修饰符冲突;对同一指针只能指定一种
变址修饰符(如near或far);同样对于同一函数, 也只能给出一种语言修饰符(
如cdecl、pascal或interrupt)。
Constant expression required 要求常量表达式;数组的大小必须是常量。
本错误通常由于#define常量的拼写错误引起的。
Could not find file‘xxx.xxx’ 找不到‘xxx.xxx’文件; 编译程序找
不到命令行上给出的文件。
Declaration missing; 声明漏掉分号;在源文件中包含一个类型或存储类
但后面漏掉了分号。
Declaration needs type or storage 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语句中必须有while;
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命令时,
显示该命令定义的信息。
Error writing output file 写输出文件错;通常是由磁盘空间引起的,
可删除某些无用文件,重新编译。
Expression syntax 表达式语法错;通常是由于两个连续操作符、 括号不
配对或缺少括号,以及前一语句漏掉了分号等引起的。
Extra parameter in call 调用时出现多余参数;调用函数时,其实际参
数个数多余函数定义的参数个数。
Extra parameter in call to xxx 调用xxx函数时,出现了多余的参数;
调用一个指定函数时(该函数由原型定义)出现了过多的参数。
File name too long 文件名太长;#include命令给出的文件名太长,编译
程序无法处理。DOS中的文件名不应超过64个字符。
For statement missing( for语句漏掉“(”。
For statement missing) for语句漏掉“)”。
For statement missing; for语句漏掉“;”。
Function call missing) 函数调用缺少“)”。
Function definition out of place 函数定义位置错;函数定义不可出现
在另一函数内,函数内的任何声明,只要以类似于带有一个参数表的函数开始,就
被认为是一个函数定义。
Function doesn‘t 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 initialization 非法初始化;初始化必须是常量表达式,或是一
个全局变量extern,或是static的地址加减一常量。
Illegal octal digit 非法八进制数。
Illegal pointer subtraction 非法指针相减; 这是由于试图以一个非指
针变量减去一个指针变量而造成的。
Illegal structure operation 非法结构操作;结构只能使用(.)、取地
址(&)和赋值(=)操作符,或作为函数的参数传递。当编译程序发现结构使用了
其它操作符时,出现此错误。
Illegal use of floating point 非法浮点运算; 浮点运算分量不允许出
现在位移运算符、按位逻辑运算符、条件(? :)、间接(*)以及其它一些运算符
中。编译程序发现上述运算符中使用了浮点运算分量时,出现此错误。
Illegal use of point 指针使用不合法;施于指针的运算符只能是加、减、
赋值、比较、间接(*)或箭头。如用其他运算符,则出现此错误。
Improper use of a typedef symbol typedef符号使用不当; 源文件中使
用了一个typedef符号,符号变量应出现在一个表达式中。 检查一下此符号的说和
可能的拼写错误。
In-line assembly not allowed 不允许直接插入的汇编语句;源文件中含
有直接插入的汇编语句,若在集成环境下进行编译,则出现此错误。 必须使用TCC
命令行编译此文件。
Incompatible storage class 不相容的存储类;源文件的一个函数定义中
使用了extern关键字,但只有static(或根本没有存储类型)
是允许的。
Incompatible type conversion 不相容的类型转换;例如:函数与非函数
间转换,一种结构体或数组与一种标准类型的转换,浮点数与指针间转换等。
Incorrect command line argument:xxx 不正确的命令行参数:xxx;编译
程序视此命令行参数是非法的。
Incorrect configuration file argument:xxx 不正确的配置文件参数:
xxx;检查一下前面的短横线(-)。
Incorrect number format 不正确的数据格式; 编译程序发现在十六进制
中出现十进制小数点。
Incorrect use of default 使用default时错误;编译程序发现default关
键字后缺少分号。
Initialize syntax error 初始化语句产生错误; 初始化过程缺少或多出
了运算符,或出现括号不匹配及其它不正常情况。
Invalid indirection 间接运算符错误; 间接运算符(*)要求非空指针
作为运算分量。
Invalid macro argument separator 无效的宏参数分隔符;在宏定义中,
参数必须用逗号分隔。编译程序发现参数名后面有其他非法字符时,出现此错误。
Invalid pointer addition 无效的指针相加;源程序中试图把两个指针相
加。
Invalid use of arrow 箭头使用错;箭头运算符后必须跟一个标识符。
Invalid use of dot 点使用错;在点运算符后必须跟一标识符。
Lvalue repuired 赋值请求;赋值运算符的左边必须是一个地址表达式,包
括数值变量、指针变量、结构引用域、间接指针和数组分量。
Macro argument syntax error 宏参数语法错误; 宏定义中的参数必须是
一个标识符。若编译程序发现所需要的参数不是标识符的字符,出现此错误。
Macro expansion too long 宏扩展太长;一个宏扩展不能多于4096个字符
当宏递归扩展自身时,常出现此错误。宏不能对自身进行扩展。
May complied only one file when an file name is given 给出一个输
出文件名时,可能只编译一个文件;在命令行编译中使用-o选择,只允许一个输出
文件名。此时,只编译第一个文件,其他文件被忽略。
Mismatch number of parameters in definition 函数多余中参数个数不
匹配;函数定义中的参数和函数原型中提供的信息不匹配。
Misplaced break break位置错误;编译程序发现break语句在switch语句
或循环结构之外。
Misplaced continue continue语句位置错误;编译程序发现continue语句
在循环结构之外。
Misplaced decimal point 十进制小数点位置错; 编译程序发现浮点常数
的指数部分有一个十进制小数点。
Misplaced else else位置错; 编译程序发现else 语句缺少与之相匹配的
if语句此错误的产生,除了由于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 必须是可编址的; 取址操作(& )作用于一个不可
编址的对象,如寄存器变量。
Must take address of memory location 地址运算符(&)不可编址的表
达式源文件中对不可编址的表达式使用了地址操作符,如对寄存器变量。
No file name ending 无文件名终止符;在#include语句中, 文件名缺少
正确的毕引号(")或右尖括号(>)。
No file name giver 未给出文件名;Turbo C编译命令(tcc)中没有包含
文件名。必须指定一个源文件名。
Non-portable pointer assignment 不可移植指针赋值; 源程序中将一个
指针赋给一个非指针或相反。但作为特例,允许把常量零值赋给一个指针,如果合
适,应该强行抑制此错误信息。
Non-portable pointer comparison 不可移植指针比较; 源程序中将一个
指针和一个非指针(常量零除外)进行比较,如果合适,应强行抑制此错误信息。
Non-portable pointer conversion 不可移植返回类型转换; 在返回语句
中的表达式类型与函数说明中的类型不同,但如果函数的返回表达式是指针,则可
以进行转换。此时,返回指针的函数可能送回一个常量零,而零被转换成一个适当
的指针值。
Not an allowed type 不允许的类型;在源文件中声明了几种禁止的类型,
如声明函数返回一个函数或数组。
Out of memory 内存不够;所有工作内存耗尽, 应把文件放到一台有较大
内存的机器去执行或简化源程序。
Pointer required on left side of -> ->操作符左边须是一个指针;在
->的左边未出现指针。
Redeclaration of“xxx” “xxx”重定义;此标识已经定义过。
Size of structure or array not known 结构体或数组大小不确定;有些
表达式(如size of或存储说明) 中出现一个未定义的结构体或一个空长度数组。
若结构长度不需要,则在定义之前就可引用;如果数组不申请存储空间或者初始化
时给定了长度,那么就可以定义为空长。
Statement missing; 语句缺少分号;编译程序发现一表达式语句后面没有
分号。
Structure of union syntax error 结构体或共用(联合)语法错误; 编
译程序发现在struct或union关键字后面没有标识符或左花括号({)。
Structure size too large 结构体太大;源文件中说明了一个结构体,它
所需的内存区域太大以致内存不够。
Subscripting missing] 下标缺少“]”;编译程序发现一个下标表达式缺
少闭方括号。可能是由于漏掉、多写操作符或括号不匹配引起的。
Switch statement missing( 语句缺少“(”; 在switch 语句中, 关键字
switch后面缺少左括号。
Switch statement missing) 语句缺少“)”;在switch语句中, 测试表达
式后面缺少右括号。
Too few parameters in call 函数调用参数太少;对带有原形的函数调用
(通过一个函数指针)参数太少。原形要求给出所有参数。
Too few parameter in call to‘xxx’ 调用‘xxx’时参数太少;调用指
定的函数(该函数用一原形声明)时,给出的参数太少。
Too many cases case太多;switch语句最多只能有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 声明中存储类太多; 一个声
明只允许有一种存储类。
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 file 文件中定义的全局数据太多; 全
局数据声明的总数超过64K字节。检查一些数组的定义是否太长。 如果所有的声明
都是必要的,考虑重新组织程序。
Two consecutive dots 两连续点;因为省略号包含三个点,而十进制小数
点和选择运算符使用一个点,所以在C程序中出现两个连续点是不允许的。
Type mismatch in parameter # 参数#类型不匹配;通过一个指针访问已
由原形说明的参数时,给定参数# N(从左到右N逐个加1)不能转换为已声明的
参数类型。
Type mismatch in parameter # incall to‘xxx’ 调用‘xxx ’时参数类
型不匹配;源文件中通过一个原形说明了指定的函数,而给定的参数(从左到右N
逐个加1)不能转换为已说明的参数类型。
Type mismatch in parameter‘xxx’ 参数‘xxx’类型不匹配;源文件中
通过一个原形声明了可由函数指针调用的函数,而所指定的参数不能转换为已声明
的参数类型。
Type mismatch in parameter‘xxx’in call to‘yyy’ 调用‘yyy’时参
数‘xxx’不匹配;源文件中通过一个原型声明了指定的参数,而指定的参数不能转
换为另一个已声明的参数类型。
Type mismatch in redeclaration of‘xxx’ 重定义类型不匹配;源文件
中把一个已经声明的变量重新声明为另一类型。如果一个函数被调用,而后又被声
明成非整形也会产生此错误。发生这种情况时,必须在第一次调用函数前给函数加
上extern声明.
Unable to create output file‘xxx.xxx’ 不能创建输出文件‘xxx. xx
x’;当工作软盘已满或有写保护时产生此错误。如果软盘已满,则删除一些不必要
的文件后重新编译;如果软盘有写保护,则把源文件移到一个可写的软盘上并重新
编译。
Unable to create turboc.lnk 不能创建turboc.lnk文件; 编译程序不能
创建临时文件TURBOC.LIN因为它不能存取磁盘或者磁盘已满。
Unable to execute command‘xxx ’ 不能执行‘xxx ’命令; 找不到
TLINK或MASM,或者磁盘出错。
Unable to open include file‘xxx.xxx’ 不能打开包含文件‘xxx.xxx’
编译程序找不到该包含文件。可能是由于一个#clude文件包含其本身引起的,也可
能是根目录下的CONFIG.SYS中没设置能同时打开的文件个数(试加一句files=20)。
Unable to open input file‘xxx.xxx’ 不能打开输入文件‘xxx.xxx’;
当编译程序找不到源文件时出现此错误。检查文件名是否拼错或检查对应的软盘或
目录中是否有此文件。
Undefined label‘xxx’ 标号‘xxx’未定义;函数中goto语句后的标号没
有定义。
Undefined structure‘xxx’ 结构体‘xxx’未定义;源文件中使用了未经
说明的某个结构体。可能是由于结构体名拼写错误或缺少结构体说明而引起的。
Undefined symbol‘xxx’ 符号‘xxx’未定义;标识符无定义, 可能是由
于说明或引用处有拼写错误,也可能是引用标识符说明错误引起。
Unexpected end of file in comment started on line 源文件在某个注
释中意外结束;通常是由于注释结束标志(*/)漏掉而引起的。
Unexpected end of file in conditional stated on line # 源文件在#
行开始的条件语句中意外结束;在编译程序遇到#endif前程序结束, 通常是由于
#endef漏掉或拼写错误引起的。
Unknown preprocessor directive‘xxx’ 不认识的预处理命令‘xxx’;
编译程序在某行开始遇到“#”字符,但其后的命令名不是下列之一:define 、
undef、line、if、ifdef、ifndef、include、else或dndif。
Unterminated character constant 未终结的字符常量;编译程序发现一个
不匹配的省略符。
Unterminated string 未终结的串;编译程序发现一个不匹配的引号。
UNterminated string or character constant 未终结的串或字符常量;编
译程序发现串或字符常量开始后没有终结。
User break 用户中断;在集成环境里编译和连接时用户按了Ctrl+Break。
While statement missing( While的表达式语句漏掉“(”;
While statement missing) While的表达式语句漏掉“)”;
Wrong number of arguments in of‘xxx’ 调用‘xxx’时参数个数错误;
源文件中调用某个宏时,参数个数不对。
3:警告:
‘xxx’declared but never used 声明了‘xxx’但未使用; 在源文件中
说明了此变量,但没有使用。当编译程序遇到复合语句或函数的结束处括号时,发
出此警告。
‘xxx’is assigned a value which is never used ‘xxx ’被赋以一个
不使用的值;此变量出现在一个赋值语句里,但直到函数结束都未使用过。当编译
程序遇到结束的闭花括号时发出此警告。
‘xxx’not part of structure ‘xxx’不是结构体的一部分;出现在点或
箭头的左边的域名不是结构体的一部分,或者点的左边不是结构体,箭头左边不指
向结构。
Ambiguous operators need parentheses 歧义运算符需要括号;当两个位
移、关系或按位操作符在一起使用而不加括号时,发出此警告;当一加法或一减法
操作符不加括号与一位移操作符出现在一起时,也发出此警告。程序员常常混淆这
些操作符的优先级,因为它们的优先级不太直观。
Both return and return of a value used 即使用返回又使用返回值;编
译程序发现一个与前面定义的return不一致的return语句,发出此警告。当某函数
只在一些return语句中返回时一般会产生错误。
Call to function with prototype 调用无原型的函数;如果“原型请求”
警告可用,且又调用了一个无原型的函数,就发出此警告。
Call to function‘xxx’with prototype 调用无原型的函数‘xxx’;如
果“原型请求”警告可用,且又调用了一个原先没有原型的函数,‘xxx’就发出此
警告。
Code has no effect 代码无效;当编译程序发现一个含有无效操作符的语
句时,发出此警告。例如语句“a+b;”对每一个变量都不起作用,无需操作,且可
能引起一个错误。
Constant is long 常量是long类型;若编译程序遇到一个十进制常量大于
32767,或一个八进制常量大于65535,而其后无字母“l”或“L”,把此常量当做
long类型处理。
Constant out of range in comparison 比较时常量超出了范围; 在源文
件中有一比较语句,其中一个常量子表达式超出了另一个子表达式类型所允许的范
围。如一个无符号量与-1比较就无意义。为得到一个大于32767 (十进制)的无符
号常量,可以在常量前加上unsigned或在常量后加字母“u”或“U”。
Conversion may lose significant digits 转换可能丢掉高位数字;在赋
值操作或其它情况下,源程序要求把long或unsigned long型转变成int或unsigned
int型。在有些机器上,因为int型和long型变量具有相同长度, 这种转换可能改
变程序的输出特性。无论此警告何时发生编译程序仍将产生代码来做比较。如果代
码比较后总是给出同样结果,比如一个字符表达式与4000比较,则代码总要进行测
试。这还表示一个无符号表达式可以与-1进行比较,因为8087机器上,一个无符号
表达式与-1有相同的位模式。
Function should return a value 函数应该返回一个值;源文件声明的当
前函数的返回类型既非int型也非void型,但编译程序未发现返回值。返回int的函
数可以不说明,因为在老版本的C语言中,没有void类型来指出函数不返回值。
Mixing pointers to signed and unsigned char 混淆signed和unsigned
char指针;没有通过显示的强制类型转换,就把一个字符指针转换为无符号指针,
或把一个无符号指针转变为字符指针。
No decaration for function‘xxx’ 函数‘xxx’没有声明;当“声明请
求”警告可用,而又调用了一个没有预先声明的函数时,发出此警告。函数声明可
以是传统的,也可以是现代(原型)的风格。
Non-portable pointer assignment 不可移植指针赋值; 源文件中把一个
指针赋给另一个非指针或相反。作为特例,可以把常量0赋给一指针。如果合适,
可以强制抑制此警告。
Non-portable pointer comparison 不可移植比较; 源文件中把一个指针
和另一非指针(非常量零)进行比较。如果合适,可以强行抑制本警告。
Non-portable return type conversion 不可移植返回类型转换; return
语句中的表达式类型和函数声明的类型不一致。作为特例,如果函数或返回表达式
是一个指针,这是可以的。在此情况下返回指针的函数可能返回一个常量零,而零
被转换成一个适当的指针值。
Parameter‘xxx’is never used 参数‘xxx’从未使用;函数说明中的某
函数在函数体里从未使用。这可以但不一定是一个错误,通常是由于参数名拼写错
误引起的。如果在函数体内,该标识符被重新定义为一个自动(局部)变量,也将
产生本警告。此参数被标识为一个自动变量但未使用。
Possible use of‘xxx’before definition 在定义‘xxx’之前
可能已使用此条件。如果改变量出现的物理位置在对它赋值之前,就会产生本警告
,当然程序的实际流程可能在使用前已赋值。
Possible incorrect assignment 可能的不正确赋值;当编译程序遇到赋
值操作符作为条件表达式(如if,while或do-while语句的一部分)的主操作符时,
发生本警告,通常是由于把赋值号当做等号使用了。若希望禁止此警告,则可把赋
值语句用括号括起来,并把它与零作显式比较。如:if(a=b)应写作if(a=b)!=0。
Redefinition of‘xxx’is not identical ‘xxx’的重定义不相同;源文
件对命名宏重定义时,使用的正文内容与第一次定义时不同,新内容将代替旧内容。
Restarting compiler using assembly 用汇编重新启动编译;编译程序遇
到一个未使用命令行选择项-B或#pragma inline语句的asm,通过时用汇编重新启
动编译。
Structure passed by value 结构按值传达;如果“结构按值传达”警告可
用,则在结构作为参数按值传达时产生本警告。通常是在编制程序时,把结构体作
为参数传递,而又漏掉了地址操作符(&)。 因为结构体可以按值传达,所以这种
遗漏是可以接收的。本警告只起到一个提示作用。
Superfluous & with function or array 在函数或数组中有多余的“&”
号;取址操作符(&)对一个数组或函数名是不必要的,应该去掉。
Suspicious pointer conversion 可疑的指针转换; 编译程序遇到一些指
针转换,这些转换引起指针指向不同的类型。如果合适,应强行抑制此警告。
Undefined structure‘xxx’ 结构体‘xxx’未定义; 在源文件中使用了
该结构,但未定义。可能是由于结构体名拼写错误或忘记定义而引起的。
Unknown assembler instruction 不认识的汇编命令; 编译程序发现在插
入的汇编语句中有一个不允许的操作码。检查此操作的拼写,并查看一下操作码表
看该命令能否被接受。
Unreachable code 不可达代码; break、continue、goto或return语句后
没有跟标号或循环函数的结束符。编译程序使用一个常量测试条件来检查while、do
和for循环,并试图知道循环没有失败。
Void function may not return a value void函数不可以返回值;源文件
中的当前函数说明为void,但编译程序发现一个带值的返回语句,该返回语句的值
将被忽略。
Zero length structure 结构长度为零; 在源文件中定义了一个总长度为
零的结构,对此结构的任何使用都是错误的。
Turbo C 编译程序查出的源程序错误分为三类:严重错误、一般错误和警告。
1:严重错误(fatal error):很少出现,它通常是内部编译出错。在发生严
重错误时,编译立即停止,必需采取一些适当的措施并重新编译。
2:一般错误(error ):指程序的语法错误以及磁盘、内存或命令行错误等。
编译程序将完成现阶段的编译,然后停止。编译程序在每个阶段( 预处理、语法分
析、优化、代码生成 )将尽可能多地找出源程序中的错误。
3:警告(warning ):不阻止编译的继续进行。它指出一些值得怀疑的情况,
而这些情况本身又可以合理地作为源程序的一部分。一旦在在源文件中使用了与机
器有关的结构,编译程序就会产生警告信息。
编译程序首先输出这三类出错信息,然后输出源文件名和发现出错的行号,最
后输出信息的内容。
下面按字母顺序分别列出了这三类出错信息。对每一条信息,均指出了可能产
生的原因和纠正方法。
1:严重错误
Bad call of inline function 内部函数的不合法调用;在使用一个宏定
义的内部函数时,没有正确调用。一个内部函数以两个下划线(_ _)开始和结束。
Irreducible expresson tree 不可约表达式树;文件中的表达式使得代
码生成程序无法为其产生代码。应避免使用这种表达式。
Register allocation failure 存储器分配失败;源文件中表达式太复杂,
代码生成程序无法为它生成代码。此时应简化这种繁琐的表达式或干脆不使用它。
2:一般错误:
#operator not followed by macro argument name “#”运算符后没跟宏
变元名;在宏定义中,,#用来标识一宏变元串,。“#”后必须跟一宏变元名。
‘xxx’not an argument “xxx”不是函数参数; 在源程序中将该标识符
定义为一个函数参数,但此标识符没有在函数的参数表中出现。
Ambiguous symbol‘xxx’ “xxx”是歧义性符号;两个或多个结构体的某
一域名(结构体变量)相同,但具有的位移、类型不同。在变量或表达式引用结构
体分量而未带结构名时,将产生歧义。这时需要修改某个域名或在引用时加上结构
名。
Argument # missing name 参数#名丢失; 参数名已脱离用于定义函数的
函数原型。如果函数以原型定义,则该函数必须包含所有的参数名。
Argument list syntax error 参数表出现语法错误;函数调用的一组参数
其间必须以一逗号隔开,并以一右括号结束。若源文件中包含有一个其后不是逗号
也不是右括号的参数,则出现此错。
Array bound missing 数组的界限符“]”丢失;在源文件中定义了一个数
组,但此数组没有以一右方括号结束。
Array size too large 数组长度过大;定义的数组太大,可用内存不够。
Assemble statement too long 汇编语句太长; 直接插入的汇编语句长度
不能超过480字节。
Bad configuration file 配置文件不正确;TURBOC.CFG配置文件中包含不
是合适命令行选择的非注释文字。配置文件命令选择项必须以一短横线(-)开始。
Bad file name format in include directive 包含命令中文件名格式不
正确;包含文件名必须用引号(“*.h”)或尖括号(〈*.h〉)括起来,否则
将产生此类错误。如果使用了一个宏,则产生的扩展程序文本也是不正确的(因为
没有加上引号)。
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 不能修改一个常量对象; 对定义为常
量的对象进行不合法操作(例如常量的赋值)将引起此错误。
Case outside of switch case出现在switch外;通常由于大括号不配对引
起的。
Case statement missing: Case语句漏掉“:”;
Case syntax error case语法错误;
Character constant too long 字符常量太长;字符常量只能是一个或两
个字符长。
Compound statement missing} 复合语句漏掉};通常由于花括号不配对引
起的。
Conflicting type modifiers 类型修饰符冲突;对同一指针只能指定一种
变址修饰符(如near或far);同样对于同一函数, 也只能给出一种语言修饰符(
如cdecl、pascal或interrupt)。
Constant expression required 要求常量表达式;数组的大小必须是常量。
本错误通常由于#define常量的拼写错误引起的。
Could not find file‘xxx.xxx’ 找不到‘xxx.xxx’文件; 编译程序找
不到命令行上给出的文件。
Declaration missing; 声明漏掉分号;在源文件中包含一个类型或存储类
但后面漏掉了分号。
Declaration needs type or storage 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语句中必须有while;
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命令时,
显示该命令定义的信息。
Error writing output file 写输出文件错;通常是由磁盘空间引起的,
可删除某些无用文件,重新编译。
Expression syntax 表达式语法错;通常是由于两个连续操作符、 括号不
配对或缺少括号,以及前一语句漏掉了分号等引起的。
Extra parameter in call 调用时出现多余参数;调用函数时,其实际参
数个数多余函数定义的参数个数。
Extra parameter in call to xxx 调用xxx函数时,出现了多余的参数;
调用一个指定函数时(该函数由原型定义)出现了过多的参数。
File name too long 文件名太长;#include命令给出的文件名太长,编译
程序无法处理。DOS中的文件名不应超过64个字符。
For statement missing( for语句漏掉“(”。
For statement missing) for语句漏掉“)”。
For statement missing; for语句漏掉“;”。
Function call missing) 函数调用缺少“)”。
Function definition out of place 函数定义位置错;函数定义不可出现
在另一函数内,函数内的任何声明,只要以类似于带有一个参数表的函数开始,就
被认为是一个函数定义。
Function doesn‘t 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 initialization 非法初始化;初始化必须是常量表达式,或是一
个全局变量extern,或是static的地址加减一常量。
Illegal octal digit 非法八进制数。
Illegal pointer subtraction 非法指针相减; 这是由于试图以一个非指
针变量减去一个指针变量而造成的。
Illegal structure operation 非法结构操作;结构只能使用(.)、取地
址(&)和赋值(=)操作符,或作为函数的参数传递。当编译程序发现结构使用了
其它操作符时,出现此错误。
Illegal use of floating point 非法浮点运算; 浮点运算分量不允许出
现在位移运算符、按位逻辑运算符、条件(? :)、间接(*)以及其它一些运算符
中。编译程序发现上述运算符中使用了浮点运算分量时,出现此错误。
Illegal use of point 指针使用不合法;施于指针的运算符只能是加、减、
赋值、比较、间接(*)或箭头。如用其他运算符,则出现此错误。
Improper use of a typedef symbol typedef符号使用不当; 源文件中使
用了一个typedef符号,符号变量应出现在一个表达式中。 检查一下此符号的说和
可能的拼写错误。
In-line assembly not allowed 不允许直接插入的汇编语句;源文件中含
有直接插入的汇编语句,若在集成环境下进行编译,则出现此错误。 必须使用TCC
命令行编译此文件。
Incompatible storage class 不相容的存储类;源文件的一个函数定义中
使用了extern关键字,但只有static(或根本没有存储类型)
是允许的。
Incompatible type conversion 不相容的类型转换;例如:函数与非函数
间转换,一种结构体或数组与一种标准类型的转换,浮点数与指针间转换等。
Incorrect command line argument:xxx 不正确的命令行参数:xxx;编译
程序视此命令行参数是非法的。
Incorrect configuration file argument:xxx 不正确的配置文件参数:
xxx;检查一下前面的短横线(-)。
Incorrect number format 不正确的数据格式; 编译程序发现在十六进制
中出现十进制小数点。
Incorrect use of default 使用default时错误;编译程序发现default关
键字后缺少分号。
Initialize syntax error 初始化语句产生错误; 初始化过程缺少或多出
了运算符,或出现括号不匹配及其它不正常情况。
Invalid indirection 间接运算符错误; 间接运算符(*)要求非空指针
作为运算分量。
Invalid macro argument separator 无效的宏参数分隔符;在宏定义中,
参数必须用逗号分隔。编译程序发现参数名后面有其他非法字符时,出现此错误。
Invalid pointer addition 无效的指针相加;源程序中试图把两个指针相
加。
Invalid use of arrow 箭头使用错;箭头运算符后必须跟一个标识符。
Invalid use of dot 点使用错;在点运算符后必须跟一标识符。
Lvalue repuired 赋值请求;赋值运算符的左边必须是一个地址表达式,包
括数值变量、指针变量、结构引用域、间接指针和数组分量。
Macro argument syntax error 宏参数语法错误; 宏定义中的参数必须是
一个标识符。若编译程序发现所需要的参数不是标识符的字符,出现此错误。
Macro expansion too long 宏扩展太长;一个宏扩展不能多于4096个字符
当宏递归扩展自身时,常出现此错误。宏不能对自身进行扩展。
May complied only one file when an file name is given 给出一个输
出文件名时,可能只编译一个文件;在命令行编译中使用-o选择,只允许一个输出
文件名。此时,只编译第一个文件,其他文件被忽略。
Mismatch number of parameters in definition 函数多余中参数个数不
匹配;函数定义中的参数和函数原型中提供的信息不匹配。
Misplaced break break位置错误;编译程序发现break语句在switch语句
或循环结构之外。
Misplaced continue continue语句位置错误;编译程序发现continue语句
在循环结构之外。
Misplaced decimal point 十进制小数点位置错; 编译程序发现浮点常数
的指数部分有一个十进制小数点。
Misplaced else else位置错; 编译程序发现else 语句缺少与之相匹配的
if语句此错误的产生,除了由于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 必须是可编址的; 取址操作(& )作用于一个不可
编址的对象,如寄存器变量。
Must take address of memory location 地址运算符(&)不可编址的表
达式源文件中对不可编址的表达式使用了地址操作符,如对寄存器变量。
No file name ending 无文件名终止符;在#include语句中, 文件名缺少
正确的毕引号(")或右尖括号(>)。
No file name giver 未给出文件名;Turbo C编译命令(tcc)中没有包含
文件名。必须指定一个源文件名。
Non-portable pointer assignment 不可移植指针赋值; 源程序中将一个
指针赋给一个非指针或相反。但作为特例,允许把常量零值赋给一个指针,如果合
适,应该强行抑制此错误信息。
Non-portable pointer comparison 不可移植指针比较; 源程序中将一个
指针和一个非指针(常量零除外)进行比较,如果合适,应强行抑制此错误信息。
Non-portable pointer conversion 不可移植返回类型转换; 在返回语句
中的表达式类型与函数说明中的类型不同,但如果函数的返回表达式是指针,则可
以进行转换。此时,返回指针的函数可能送回一个常量零,而零被转换成一个适当
的指针值。
Not an allowed type 不允许的类型;在源文件中声明了几种禁止的类型,
如声明函数返回一个函数或数组。
Out of memory 内存不够;所有工作内存耗尽, 应把文件放到一台有较大
内存的机器去执行或简化源程序。
Pointer required on left side of -> ->操作符左边须是一个指针;在
->的左边未出现指针。
Redeclaration of“xxx” “xxx”重定义;此标识已经定义过。
Size of structure or array not known 结构体或数组大小不确定;有些
表达式(如size of或存储说明) 中出现一个未定义的结构体或一个空长度数组。
若结构长度不需要,则在定义之前就可引用;如果数组不申请存储空间或者初始化
时给定了长度,那么就可以定义为空长。
Statement missing; 语句缺少分号;编译程序发现一表达式语句后面没有
分号。
Structure of union syntax error 结构体或共用(联合)语法错误; 编
译程序发现在struct或union关键字后面没有标识符或左花括号({)。
Structure size too large 结构体太大;源文件中说明了一个结构体,它
所需的内存区域太大以致内存不够。
Subscripting missing] 下标缺少“]”;编译程序发现一个下标表达式缺
少闭方括号。可能是由于漏掉、多写操作符或括号不匹配引起的。
Switch statement missing( 语句缺少“(”; 在switch 语句中, 关键字
switch后面缺少左括号。
Switch statement missing) 语句缺少“)”;在switch语句中, 测试表达
式后面缺少右括号。
Too few parameters in call 函数调用参数太少;对带有原形的函数调用
(通过一个函数指针)参数太少。原形要求给出所有参数。
Too few parameter in call to‘xxx’ 调用‘xxx’时参数太少;调用指
定的函数(该函数用一原形声明)时,给出的参数太少。
Too many cases case太多;switch语句最多只能有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 声明中存储类太多; 一个声
明只允许有一种存储类。
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 file 文件中定义的全局数据太多; 全
局数据声明的总数超过64K字节。检查一些数组的定义是否太长。 如果所有的声明
都是必要的,考虑重新组织程序。
Two consecutive dots 两连续点;因为省略号包含三个点,而十进制小数
点和选择运算符使用一个点,所以在C程序中出现两个连续点是不允许的。
Type mismatch in parameter # 参数#类型不匹配;通过一个指针访问已
由原形说明的参数时,给定参数# N(从左到右N逐个加1)不能转换为已声明的
参数类型。
Type mismatch in parameter # incall to‘xxx’ 调用‘xxx ’时参数类
型不匹配;源文件中通过一个原形说明了指定的函数,而给定的参数(从左到右N
逐个加1)不能转换为已说明的参数类型。
Type mismatch in parameter‘xxx’ 参数‘xxx’类型不匹配;源文件中
通过一个原形声明了可由函数指针调用的函数,而所指定的参数不能转换为已声明
的参数类型。
Type mismatch in parameter‘xxx’in call to‘yyy’ 调用‘yyy’时参
数‘xxx’不匹配;源文件中通过一个原型声明了指定的参数,而指定的参数不能转
换为另一个已声明的参数类型。
Type mismatch in redeclaration of‘xxx’ 重定义类型不匹配;源文件
中把一个已经声明的变量重新声明为另一类型。如果一个函数被调用,而后又被声
明成非整形也会产生此错误。发生这种情况时,必须在第一次调用函数前给函数加
上extern声明.
Unable to create output file‘xxx.xxx’ 不能创建输出文件‘xxx. xx
x’;当工作软盘已满或有写保护时产生此错误。如果软盘已满,则删除一些不必要
的文件后重新编译;如果软盘有写保护,则把源文件移到一个可写的软盘上并重新
编译。
Unable to create turboc.lnk 不能创建turboc.lnk文件; 编译程序不能
创建临时文件TURBOC.LIN因为它不能存取磁盘或者磁盘已满。
Unable to execute command‘xxx ’ 不能执行‘xxx ’命令; 找不到
TLINK或MASM,或者磁盘出错。
Unable to open include file‘xxx.xxx’ 不能打开包含文件‘xxx.xxx’
编译程序找不到该包含文件。可能是由于一个#clude文件包含其本身引起的,也可
能是根目录下的CONFIG.SYS中没设置能同时打开的文件个数(试加一句files=20)。
Unable to open input file‘xxx.xxx’ 不能打开输入文件‘xxx.xxx’;
当编译程序找不到源文件时出现此错误。检查文件名是否拼错或检查对应的软盘或
目录中是否有此文件。
Undefined label‘xxx’ 标号‘xxx’未定义;函数中goto语句后的标号没
有定义。
Undefined structure‘xxx’ 结构体‘xxx’未定义;源文件中使用了未经
说明的某个结构体。可能是由于结构体名拼写错误或缺少结构体说明而引起的。
Undefined symbol‘xxx’ 符号‘xxx’未定义;标识符无定义, 可能是由
于说明或引用处有拼写错误,也可能是引用标识符说明错误引起。
Unexpected end of file in comment started on line 源文件在某个注
释中意外结束;通常是由于注释结束标志(*/)漏掉而引起的。
Unexpected end of file in conditional stated on line # 源文件在#
行开始的条件语句中意外结束;在编译程序遇到#endif前程序结束, 通常是由于
#endef漏掉或拼写错误引起的。
Unknown preprocessor directive‘xxx’ 不认识的预处理命令‘xxx’;
编译程序在某行开始遇到“#”字符,但其后的命令名不是下列之一:define 、
undef、line、if、ifdef、ifndef、include、else或dndif。
Unterminated character constant 未终结的字符常量;编译程序发现一个
不匹配的省略符。
Unterminated string 未终结的串;编译程序发现一个不匹配的引号。
UNterminated string or character constant 未终结的串或字符常量;编
译程序发现串或字符常量开始后没有终结。
User break 用户中断;在集成环境里编译和连接时用户按了Ctrl+Break。
While statement missing( While的表达式语句漏掉“(”;
While statement missing) While的表达式语句漏掉“)”;
Wrong number of arguments in of‘xxx’ 调用‘xxx’时参数个数错误;
源文件中调用某个宏时,参数个数不对。
3:警告:
‘xxx’declared but never used 声明了‘xxx’但未使用; 在源文件中
说明了此变量,但没有使用。当编译程序遇到复合语句或函数的结束处括号时,发
出此警告。
‘xxx’is assigned a value which is never used ‘xxx ’被赋以一个
不使用的值;此变量出现在一个赋值语句里,但直到函数结束都未使用过。当编译
程序遇到结束的闭花括号时发出此警告。
‘xxx’not part of structure ‘xxx’不是结构体的一部分;出现在点或
箭头的左边的域名不是结构体的一部分,或者点的左边不是结构体,箭头左边不指
向结构。
Ambiguous operators need parentheses 歧义运算符需要括号;当两个位
移、关系或按位操作符在一起使用而不加括号时,发出此警告;当一加法或一减法
操作符不加括号与一位移操作符出现在一起时,也发出此警告。程序员常常混淆这
些操作符的优先级,因为它们的优先级不太直观。
Both return and return of a value used 即使用返回又使用返回值;编
译程序发现一个与前面定义的return不一致的return语句,发出此警告。当某函数
只在一些return语句中返回时一般会产生错误。
Call to function with prototype 调用无原型的函数;如果“原型请求”
警告可用,且又调用了一个无原型的函数,就发出此警告。
Call to function‘xxx’with prototype 调用无原型的函数‘xxx’;如
果“原型请求”警告可用,且又调用了一个原先没有原型的函数,‘xxx’就发出此
警告。
Code has no effect 代码无效;当编译程序发现一个含有无效操作符的语
句时,发出此警告。例如语句“a+b;”对每一个变量都不起作用,无需操作,且可
能引起一个错误。
Constant is long 常量是long类型;若编译程序遇到一个十进制常量大于
32767,或一个八进制常量大于65535,而其后无字母“l”或“L”,把此常量当做
long类型处理。
Constant out of range in comparison 比较时常量超出了范围; 在源文
件中有一比较语句,其中一个常量子表达式超出了另一个子表达式类型所允许的范
围。如一个无符号量与-1比较就无意义。为得到一个大于32767 (十进制)的无符
号常量,可以在常量前加上unsigned或在常量后加字母“u”或“U”。
Conversion may lose significant digits 转换可能丢掉高位数字;在赋
值操作或其它情况下,源程序要求把long或unsigned long型转变成int或unsigned
int型。在有些机器上,因为int型和long型变量具有相同长度, 这种转换可能改
变程序的输出特性。无论此警告何时发生编译程序仍将产生代码来做比较。如果代
码比较后总是给出同样结果,比如一个字符表达式与4000比较,则代码总要进行测
试。这还表示一个无符号表达式可以与-1进行比较,因为8087机器上,一个无符号
表达式与-1有相同的位模式。
Function should return a value 函数应该返回一个值;源文件声明的当
前函数的返回类型既非int型也非void型,但编译程序未发现返回值。返回int的函
数可以不说明,因为在老版本的C语言中,没有void类型来指出函数不返回值。
Mixing pointers to signed and unsigned char 混淆signed和unsigned
char指针;没有通过显示的强制类型转换,就把一个字符指针转换为无符号指针,
或把一个无符号指针转变为字符指针。
No decaration for function‘xxx’ 函数‘xxx’没有声明;当“声明请
求”警告可用,而又调用了一个没有预先声明的函数时,发出此警告。函数声明可
以是传统的,也可以是现代(原型)的风格。
Non-portable pointer assignment 不可移植指针赋值; 源文件中把一个
指针赋给另一个非指针或相反。作为特例,可以把常量0赋给一指针。如果合适,
可以强制抑制此警告。
Non-portable pointer comparison 不可移植比较; 源文件中把一个指针
和另一非指针(非常量零)进行比较。如果合适,可以强行抑制本警告。
Non-portable return type conversion 不可移植返回类型转换; return
语句中的表达式类型和函数声明的类型不一致。作为特例,如果函数或返回表达式
是一个指针,这是可以的。在此情况下返回指针的函数可能返回一个常量零,而零
被转换成一个适当的指针值。
Parameter‘xxx’is never used 参数‘xxx’从未使用;函数说明中的某
函数在函数体里从未使用。这可以但不一定是一个错误,通常是由于参数名拼写错
误引起的。如果在函数体内,该标识符被重新定义为一个自动(局部)变量,也将
产生本警告。此参数被标识为一个自动变量但未使用。
Possible use of‘xxx’before definition 在定义‘xxx’之前
可能已使用此条件。如果改变量出现的物理位置在对它赋值之前,就会产生本警告
,当然程序的实际流程可能在使用前已赋值。
Possible incorrect assignment 可能的不正确赋值;当编译程序遇到赋
值操作符作为条件表达式(如if,while或do-while语句的一部分)的主操作符时,
发生本警告,通常是由于把赋值号当做等号使用了。若希望禁止此警告,则可把赋
值语句用括号括起来,并把它与零作显式比较。如:if(a=b)应写作if(a=b)!=0。
Redefinition of‘xxx’is not identical ‘xxx’的重定义不相同;源文
件对命名宏重定义时,使用的正文内容与第一次定义时不同,新内容将代替旧内容。
Restarting compiler using assembly 用汇编重新启动编译;编译程序遇
到一个未使用命令行选择项-B或#pragma inline语句的asm,通过时用汇编重新启
动编译。
Structure passed by value 结构按值传达;如果“结构按值传达”警告可
用,则在结构作为参数按值传达时产生本警告。通常是在编制程序时,把结构体作
为参数传递,而又漏掉了地址操作符(&)。 因为结构体可以按值传达,所以这种
遗漏是可以接收的。本警告只起到一个提示作用。
Superfluous & with function or array 在函数或数组中有多余的“&”
号;取址操作符(&)对一个数组或函数名是不必要的,应该去掉。
Suspicious pointer conversion 可疑的指针转换; 编译程序遇到一些指
针转换,这些转换引起指针指向不同的类型。如果合适,应强行抑制此警告。
Undefined structure‘xxx’ 结构体‘xxx’未定义; 在源文件中使用了
该结构,但未定义。可能是由于结构体名拼写错误或忘记定义而引起的。
Unknown assembler instruction 不认识的汇编命令; 编译程序发现在插
入的汇编语句中有一个不允许的操作码。检查此操作的拼写,并查看一下操作码表
看该命令能否被接受。
Unreachable code 不可达代码; break、continue、goto或return语句后
没有跟标号或循环函数的结束符。编译程序使用一个常量测试条件来检查while、do
和for循环,并试图知道循环没有失败。
Void function may not return a value void函数不可以返回值;源文件
中的当前函数说明为void,但编译程序发现一个带值的返回语句,该返回语句的值
将被忽略。
Zero length structure 结构长度为零; 在源文件中定义了一个总长度为
零的结构,对此结构的任何使用都是错误的。
Turbo C出错信息 全面解释
Turbo C出错信息
教你认识电脑出错信息-中文解释(收藏)
Qt经典出错信息
理解命令行出错信息
出错英文提示翻译解释
windows installer出错信息解决
windows installer出错信息解决
电脑开机出错英文提示翻译解释
蓝色理想 - windows installer出错信息解决
汇编指令与出错信息详查
电脑系统出错信息及解决方案
OUTLOOK EXPRESS出错信息代码表
解析Excel中的几种出错信息
如何利用PHP自定义错误处理器处理出错信息
利用Turbo C 2.0编程软件实现孔板流量计的计算 ---机床行业应用案例-机床行业频...
c 非常全面 值得收藏!!!
MYSQL出错代码及出错信息对照 HOW-TOs(新手教程) PHPWind Board - powered by phpwind.net
教育厅昨日全面解释高中课程改革
教育厅昨日全面解释高中课程改革11
百度空间CSS更全面解释
口腔溃疡的全面解释(很全)
揭露Core i家族新技术全面解释
TURBO涡轮增压