青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 1147|回复: 2

[原创] Turbo C编译出错信息

[复制链接]
发表于 2015-8-1 16:46 | 显示全部楼层 |阅读模式
本帖最后由 1821117007 于 2015-10-24 09:20 编辑
5 E& e0 t1 c' L3 w4 V5 e6 ~3 O" x: l

' A- }3 h8 d6 }) L. _' }
Turbo C编译出错信息
    Turbo C编译程序查出的源程序错误分为三类:严重错误、一般错误和警告。
    (1)严重错误(fatal error):很少出现,它通常是内部编译出错。在发生严重错误时,
编译立即停止,必须采取一些适当的措施并重新编译。
    (2)一般错误(error):指程序的语法错误以及磁盘、内存或命令行错误等。编译程序将完成现阶段的编译,然后停止。编译程序在每个阶段(预处理、语法分析、优化、代码生成)将尽可能多地找出源程序中的错误。
    (3)警告(warning):不阻止编译继续进行它指出一些值得怀疑的情况,而这些情
况本身又可以合理地作为源程序的一部分。一旦在源文件中使用了与机器有关的结构,
编译程序就将产生警告信息。
    编译程序首先输出这三类出错信息,然后输出源文件名和发现出错的行号,最后输出
信息的内容。
    下面按字母顺序分别列出这三类出错信息。对每一条信息,均指出了可能产生的原
因和纠正方法。
    请注意出错信息处有关行号的一个细节:编译程序仅产生检测到的信息。因为C不
限定在正文的某行设置语句,这样,真正产生错误的行可能在指出行号的前一行或前几
行。在下面的信息列表中,我们指出了这种情况。
    1.严重错误
    Bad call of inline function 内部函数的不合法调用
    在使用一个宏定义的内部函数时,没有正确调用。一个内部函数以两个下划线()
开始和结束。
    Irreducible expression tree不可约表达式树
    文件中的表达式使得代码生成程序无法为其产生代码。应避免使用这种表达式。
    Register allocation failure存储器分配失败
    源文件中的表达式太复杂,代码生成程序无法为它生成代码。此时应简化这种繁琐
的表达式或干脆避免使用它。
    2.一般错误
    #operator not followed by macro argument name  “#” 运算符后没跟宏变元名
    在宏定义中,#用来标识一宏变元是串。“#”后必须跟一宏变元名.
    ‘xxxxxxxx’ not an argument  “xxxxxxxx” 不是函数参数
    在源程序中将该标识符定义为一个函数参数,但此标识符没有在函数的参数表中
出现。
    Ambiguous symbol‘xxxxxxxx’  歧义性符号“xxxxxxxx”
    两个或多个结构体的某一域名(结构体变量)相同.但具有的位移、类型不同。在变量
或表达式中引用这些结构体分量而未带结构名时,将产生歧义。这时需修改某个域名或
在引用时加上结构名。
    Argument # missing name  参数#名丢失
    参数名已脱离用于定义函数的函数原型。如果函数以原型定义,则该函数必须包含
所有的参数名。
    Argument list syntax error   参数表出现语法错误
    函数调用的一组参数其间必须以逗号隔开,并以一右括号结束。若源文件中含有一
个其后不是逗号也不是右括号的参数,则出现此错。
    Array bound missing  数组的界限符“]”丢失
    在源文件中定义了一个数组,但此数组没有以一右方括号结束。
    Array size too large  数组长度过大
    定义的数组太大,可用内存不够。
    Assembler statement too long   汇编语句太长
    直接插入的汇编语句最长不能超过480字节。
    Bad configuration file  配置文件不正确。
    TURBOC.CFG配置文件中包含不是合适命令行选择的非注释文字。配置文件命令
选择项必须以一短横线(-)开始。
    Bad file name format in include directive  包含命令中文件名格式不正确
    包含文件名必须用引号(“filename. h")或尖括号(<Gfilename. h>)括起来,否则将产
生此类错误。如果使用了一个宏,则产生的扩展程序文本也是不正确的(因为没有加上
引号)。
    Bad ifdef directive syntax   ifdef命令语法错误
    #ifdef必须以单个标识符(仅此一个)作为该命令的体.
    Bad ifndef directive syntax   ifndef命令语法错误
    #ifndef必须以单个标识符(仅此一个)作为该命令的体。
    Bad undef directive syntax    undcf命令语法错误
    #undef必须以单个标识符(仅此一个)作为该命令的体。
    Bad file size syntax  位字段长语法错误
    一个位字段长必须是1-16位的常量表达式。
    Call of non-function   调用未定义函数
    正被调用的函数无定义,通常是由于不正确的函数声明或函数名拼写错引起的.
    Cannot modify a constant object  不能修改一个常量对象
    对定义为常量的对象进行不合法操作(例如常量的赋值)将引起本错误
    Case outside of switch    case出现在switch外
    编译程序发现case语句出现在switch语句外面,通常是由于括号不配对引起的.
    Case statement missing:    case语句漏掉“:”
    case语句必须含有一个以冒号终结的常量表达式。可能是丢了冒号或冒号前多了
别的符号。
    Case syntax error   case语法错误
    case中有一些不正确的符号。
    Character constant too long   字符常量太长
    字符常量只能是一个或两个字符长.
    Compound statement missing}  复合语句漏掉“}”
    编译程序扫描到源文件结束时,未发现结束标记“}”,通常是由于花括号不配对引
起的。
    Conflicting type modifiers    类型修饰符冲突
    对同一指针,只能指定一种变址修饰符(如near或far);同样对于同一函数,也只能
给出一种语言修饰符(如cdecl、pascal或interrupt)
    Constant expression required  要求常量表达式
    数组的大小必须是常量。本错误通常由于#define常量的拼写出错而引起.
    Could not find file‘xxxxxxxx. xxx’  找不到“xxxxxxxx. xxx”文件。
    编译程序找不到命令行上给出的文件。
    Declaration missing;    声明漏掉“;”
    在源文件中包含一个类型或一个存储类,但后面漏掉了分号(;)。
    Declaration needs type or storage class   声明必须给出类型或存储类
    声明必须包含一个类型或一个存储类,如声明:“i,j;”是不正确的。
    Declaration syntax error  声明出现语法错误
    在源文件中,某个声明丢失了某些符号或有多余的符号。
    Default outside of switch  Default 在switch外出现
    编译程序发现default语句出现在switch语句之外,通常是由于括号不配对引起的。
    Define directive needs an identifier   Define 命令必须有一个标识符
    #define后面的第一个非空格符必须是一标识符。若编译程序发现一些其他字符,
则出现本错误。
    Division by zero 除数为零
    源文件的常量表达式中,出现除数为零的情况。
    Do statement must have while   do语句中必须有while
    源文件中含有一无while关键字的do语句时,出现本错误。
    Do-while statement missing(   do-while语句中漏掉了“(”
    在do语句中,编译程序发现while关键字后无左括号。
    Do-while statement missing)  do-while语句中漏掉了“)”
    在do语句中,编译程序发现条件表达式后无右括号。
    Do-while statement missing; do-while语句中漏掉了分号
    在do语句中的条件表达式中,编译程序发现右括号后面无分号。
    Duplicate case  case的情况值不唯一
    switch语句的每个case必须有一个唯一的常量表达式值。
    Enam syntax error   enum语法错
    enum声明的标识符表的格式不对。
    Enumeration constant syntax error   枚举常量语法错
    赋给enum类型变量的表达式值不为常量,产生本错误。
    Error Directive:xxxx Error   命令:xxxx
    处理源文件中的#error命令时.显示该命令定义的信息。
    Error writing output file   写输出文件错
    通常是由于磁盘空间引起的,可能要删除一些不必要的文件,重新编泽。
    Expression syntax   表达式语法错
    当编译程序分析一表达式并发现一些严重错误时,出现本错误。通常是由于两个连
续操作符、括号不配对或缺少括号,以及前一语句漏掉了分号等引起的。
    Extra parameter in call   调用时出现多余参数
    调用函数时,其实际参数个数多于函数定义中的参数个数。
    Extra parameter in call to xxxxxxxx  调用xxxxxxxx 函数时出现了多余的参数
    调用个指定的函数时(该函数由原型定义)出现了过多的参数。
    File name too long  文件名太长
    #include命令给出的文件名太长,编译程序无法处理。DOS中的文件名不应超过
64个字符。
    For statement missing(    for语句漏掉“(”
    编译程序发现在for关键字后缺少左括号
    For statement missing)     for语句缺少“)”
    在for语句中,编译程序发现在控制表达式后缺少右括号。
    For statement missing;   for语句缺少“;”
    在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语句中,编译程序发现if关键字后面缺少左括号。
    If statement missing)   if语句缺少“)”
    在if语句中,编译程序发现测试表达式后缺少右括号。
    Illegal character‘c’(OxXX)  非法字符‘c’(OxXX)
    编译程序发现输入文件中有一些非法字符,即以十六进制形式打印的字符口。
    IIIegal initialization    非法初始化
    初始化必须是常量表达式,或是一个全局变量extern,或是static的地址加减一
常量。
    Illegal octal digit   非法八进制数
    编译程序发现一个八进制常数中包含了非八进制数字(例如8或,9)。
    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: xxxxxxxx  不正确的命令行参数:xxxxxxxx
    编译程序视此命令行参数是非法的。
    Incorrect configuration file argument: xxxxxxxx   不正确的配置文件参数:
xxxxxxxx
    编译程序视此配置文件是非法的。检杳一下前面的短横线(-)。
    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 required  赋值请求
    赋值运算符的左边必须是一个地址表达式,包括数值变量、指针变量、结构引用域、间
接指针和数组分量。
    Macro argument syntax error  宏参数语法错误
    宏定义中的参数必须是一个标识符。若编译程序发现所需要的参数不是标识符的字
符,则出现本错误。
    Macro expansion too long  宏扩展太长
    一个宏扩展不能多于1096个字符。当宏递归扩展自身时,常出现本错误。宏不能对
自身进行扩展。
    May complied only one file when an output 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命令。
    Misplaced endif directive  endif命令位置错
    编泽程序找不到与#endif命令相匹配的#if、#ifdef或#ifndef命令。
    Must be addressable  必须是可编址的
    取址操作(&)作用于一个不可编址的对象,如寄存器变量。
    Must take address or 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 ‘xxxxxxxx’  “"xxxxxxxx”重定义
    此标识已经定义过。
    Size of structure or array not known  结构体或数组大小不确定
    有些表达式(如sizeof或存储说明)中出现一个未定义的结构体或一个空长度数组
如果结构长度不需要,则在定义之前就可引用:如果数组不申请存储空间或者初始化时给
定了长度,那么就可以定义为空长。
    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‘xxxxxxxx’  调用“xxxxxxxx”时参数太少。
    调用指定的函数(该函数用一原型声明)时.给出的参数太少。
    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、int、float、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 # in call to ‘xxxxxxxx’  调用“xxxxxxxx”时参数类型不匹配
    源文件中通过一个原型说明了指定的函数,而给定的参数(从左到右N个逐个加1)
不能转换为已说明的参数类型。
    Type mismatch in parameter ‘xxxxxxxx’参数“xxxxxxxx”类型不匹配
    源文件中通过一个原型声明了可由函数指针调用的函数,而所指定的参数不能转换
为已声明的参数类型。
    Type mismatch in parameter‘xxxxxxxx’in call to‘yyyyyyyy’调用“yyyyyyy”时参数“xxxxxxxx”类型不匹配
    源文件中通过一个原型声明了指定的参数,而指定参数不能转换为另一个已声明的
参数类型。
    Type mismatch in redeclaration of‘xxx’  重定义类型不匹配
    源文件中把一个已经声明的变量重新声明为另一种类型。如果一个函数被调用,而
后又被声明成非整型也会产生本错误。发生这种情况时,必须在第一次调用函数前给函
数加extern声明。
    Unable to create output file ‘xxxxxxxx . xxx’  不能创建输出文件“xxxxxxxx.
XXX”
    当工作软盘已满或有写保护时产生本错误。如果软盘已满,则删除一些不必要的文
件后重新编译;如果软盘有写保护,则把源文件移到一个可写的软盘上并重新编译。
    Unable to create turboc. lnk 不能创建turboc.lnk
    编译程序不能创建临时文件TURBOC. LIN、因为它不能存取磁盘或者磁盘已满。
    Unable to execute command‘xxxxxxxx’不能执行“xxxxxxXx”命令
    找不到丁LINK或MASM,或者磁盘出错。
    Unable to open include file‘xxxxxxxx. xxx’  不能打开包含文件“xxxxxxxx.
xxx”
    编译程序找不到该包含文件。可能是由于一个#include文件包含它本身而引起的,
也可能是根目录下的CONFIG. SYS中没有设置能同时打开的文件个数(试加一句files
=20)。
    Unable to open input file‘xxxxxxxx.xxx’不能打开输人文件“xxxxxxxx.xxx”
    当编译程序找不到源文件时出现本错误。检查文件名是否拼错或检查对应的软盘或
目录中是否有此文件。
    Undefined label ‘xxxxxxxx’标号“xxxxxxxX”未定义
    函数中goto语句后的标号投有定义。
    Undefined structure ‘xxxxxxxx’结构体“xxxxxxxx”未定义
    源文件中使用了未经说明的某个结构体。可能是由于结构体名拼写错或缺少结构体
说明而引起。
    Undefined symbol ‘xxxxxxxx’符号“xxxxxxxx”未定义
    标识符无定义,可能是由于说明或引用处有拼写错误,也可能是由于标识符说明错误
引起。
    Unexpected end of file in comment started on line  源文件在某个注释中意外结束
    通常是由于注释结束标志(*/)漏掉引起的。
    Unexpected end of file in conditional stated on line#   源文件在# 行开始的条件语句中意外结束
    在编译程序遇到#endif 前源程序结束,通常是由于#endif漏掉或拼写错误引起的。
    Unknown preprocessor directive ‘xxx’不认识的预处理命令:“xxx”
    编译程序在某行的开始遇到“#”字符,但其后的命令名不是下列之一:define、 undef、
line、if、ifdef、ifndef、include、else或endif。
    Unterminated character constant 未终结的字符常量
    编译程序发现一个不匹配的省略符。
    Unterminated string 未结的串
    编译程序发现一个不匹配的引号。
    Unterminated string or character constant  未终结的串或字符常量
    编译程序发现串或字符常量开始后没有终结。
    User break   用户中断
    在集成环境里进行编译或连接时用户按了Ctrl+Break键。
    While statement missing(   while的表达式语句漏掉“(”
    在while语句中,关键字while后缺少左括号。
    While statement missing)   while语句漏掉“)”
    在while语句中,关键字while的表达式后缺少右括号。
    Wrong number of arguments in of ‘xxxxxxxx’调用“xxxxxxxx”时参数个数错误源
    文件中调用某个宏时,参数个数不对。
    3.警告
    ‘xxxxxxxx’ declared but never used   声明了“xxxxxxxx”但未使用
    在源文件中说明了此变量,但没有使用。当编译程序遇到复合语句或函数的结束处
括号时,发出本警告.
    ‘xxxxxxxx’ is assigned a value which is never used   “xxxxxxxx”被赋以一个不使用的值
    此变量出现在一个赋值语句里,但直到函数结束都未使用过。当编译程序遇到结束
的闭花括号时发出本警告。
    ‘xxxxxxxx’not part of structure  “xxxxxxxx”不是结构体的一部分
    出现在点(.)或箭头(—>)的左边的域名不是结构体的一部分,或者点的左边不是
结构体,箭头的左边不指向结构。
    Ambiguous operators need parentheses  歧义运算符需要括号
    当两个位移、关系或按位操作符在一起使用而不加括号时,发出本警告;当一加法或
减法操作符不加括号与一位移操作符出现在一起时,也发出本警告。程序员常常混淆这
些操作符的优先级,因为它们的优先级不太直观。
    Both return and return of a value used  既使用返回又使用返回值
    编译程序发现一个与前面定义的return语句不一致的return语句,发出本警告。当
某函数只在一些return语句中返回值时一般会产生错误。
    Call to function with prototype  调用无原型函数
    如果“原型请求”警告可用,且又调用了一个原型的函数,就发出木警告。
    Call to function‘xxxx’with prototype   调用无原型的函数“xxxx”
    如果“原型请求”警告可用,且又调用了一个原先没有原型的函数"xxxx",就发出本
警告。
    Code has no effect   代码无效
    当编译程序遇到一个含有无效操作符的语句时,发出本警告。例如语句“a+b”;对每
一个变量都不起作用,无需操作,且可能引起一个错误。
    Constant is long    常量是long类型
    若编译程序遇到一个十进制常量大于32767,或一个八进制常量大于65535,而其后
没有字母“l"或“L",把此常量当作long类型处理。
    Constant out of range in comparison  比较时常量超出了范围
    在源文件中有一比较语句,其中一个常量子表达式超出了另一个子表达式类型所允
许的范围。如一个无符号量与-1比较就没有意义。为得到一大于32767(十进制)的无
符号常量,可以在常量前加上unsigned(如:(unsigned) 65535)或在常量后加上字母“u"
或“U"(如:65535u)。
    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 ‘xxxxxxxx’ 函数"xxxxxxxx"没有声明
    当“声明请求”警告可用,而又调用了一个没有预先声明的函数时,发出本警告。函
数声明可以是传统的,也可以是现代(原型)的风格。
    Non-portable pointer assignment 不可移植指针赋值
    源文件中把一个指针赋给另一个非指针或相反。作为特例,可以把常量零赋给一指
针。如果合适,可以强行抑制本警告。
    Non-portable pointer comparison 不可移植指针比较
    源文件中把一个指针和另一非指针(非常量零)进行比较。如果合适,可以强行抑制
本警告。
    Non-portable return type conversion  不可移植返回类型转换
    return语句中的表达式类型和函数声明的类型不一致。作为特例,如果函数或返回
表达式是一个指针,这是可以的。在此情况下返回指针的函数可能返回一个常量零,而零
被转变成一个适当的指针值。
    Parameter‘xxxxxxxx’is never used  参数“xxxxxxxx”从未使用
    函数说明中的某参数在函数体里从未使用。这可以但不一定是一个错误,通常是由
于参数名拼写错误而引起。如果在函数体内,该标识符被重新定义为一个自动(局部)变
量.也将产生本警告此参数被标识为一个自动变量但未使用。
    Possible use of‘xxxxxxxx’ before definition  在定义“xxxxxxxx”之前可能已使用
    源文件的某表达中使用了未经赋值的变量,编译程序对源文件进行简单扫描以确定
此条件。如果该变量出现的物理位置在对它赋值之前,就会产生本警告,当然程序的实际
流程可能在使用前已赋值.
    Possible incorrect assignment  可能的不正确赋值
    当编译程序遇到赋值操作符作为条件表达式(如if、while或do-while语句的一部分)
的主操作符时,发生本警告,通常是由于把赋值号当作等号使用了。如果希望禁止此警
告,.则可把赋值语句用括号括起来,并且把它与零作显式比较。如:
    if(a=b)应写成if((a=b)!=0)
    Redefinition of ‘xxxxxxxx’ is not identical   "xxxxxxxx"的重定义不相同
    源文件中对命名宏重定义时,使用的正文内容与第一次定义时不同,新内容将代替旧
内容。
    Restarting compiler using assembly   用汇编重新启动编译
    编译程序遇到一个未使用命令行选择项-B或#pragma inline语句的asm,通过使
用汇编重新启动编译。
    Structure passed by value   结构按值传送
    如果“结构按值传送”警告可用,则在结构作为参数按值传送时产生本警告。通常是
在编制程序时,把结构体作为参数传递,而又漏掉了地址操作符(&)。因为结构体可以按
值传送,所以这种遗漏是可接收的。本警告只起一个提示作用。
    Superfluous & with function or array  在函数或数组中有多余的“&”号
    取址操作符(&)对一个数组或函数名是不必要的,应该去掉。
    Suspicious pointer conversion 可疑的指针转换
    编译程序遇到一些指针转换,这些转换引起指针指向不同的类型。如果合适,应强行
抑制本警告。
    Undefined structure‘xxxxxxxx’结构体"xxxxxxxx"未定义
    在源文件中使用了该结构,但未定义。可能是由于结构体名拼写错误或忘记定义而
引起的。
    Unknown assembler instruction 不认识的汇编命令
    编译程序发现在插人的汇编语句中有一个不允许的操作码检查此操作的拼写,并
查看一下操作码表看该命令能否被接受。
    Unreachable code不可达代码
    break、continue、goto或return语句后没有跟标号或循环函数的结束符。编译程序
使用一个常量测试条件来检查while、do和for循环,并试图知道循环没有失败。
    Void function may not return a value     void函数不可以返回值
    源文件中的当前函数说明为void,但编译程序发现一个带值的返回语句,该返回语句
的值将被忽略。
    Zero length structure  结构长度为零
    在源文件中定义了一个总长度为零的结构,对此结构的任何使用都是错误的。
& {. _% `0 Z7 |* q; u, Q8 E, B

' p) D- [5 A: v) n! \1 [% @& Z
0 S) Y. Y- \' ]' o- T' m
3 Q+ ^; x9 {6 w1 X
发表于 2015-8-6 15:11 | 显示全部楼层
做为一名UG爱好者,看帖看完了至少要顶一下,还可以加入到淘帖哦!
回复 支持 反对

使用道具 举报

发表于 2015-10-23 14:06 | 显示全部楼层
做为一名UG爱好者,看帖看完了至少要顶一下,还可以加入到淘帖哦!! w5 Q* M. j% u' M
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2024-12-22 14:36 , Processed in 0.056683 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表