《2022年附录BKeilC编译常见错误与警告 .pdf》由会员分享,可在线阅读,更多相关《2022年附录BKeilC编译常见错误与警告 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、317 附录 B Keil C51 编译常见错误与警告在利用 Keil C51 进行单片机软件程序的编写、调试过程中,经常会出现这样的现象,因为疏忽大意或是对于程序编写规则的不熟悉等原因,工程编译不能正常通过,导致最终未能生成单片机用于下载烧片所需的.hex 文件。以下列举出了一些在工程编译过程中,常见的警告或错误的提示信息,以及解决这些警告或错误的具体方法;给出了常见编译器错误信息的查找方法和Keil C51 编译器常见错误与警告提示信息中英文对照表,供读者在工程调试和编译过程中参考。一、常见错误与警告现象现象一: 部分程序如下 : ,ET0=1 ET1=1; , 错误编号: C141 原因
2、:程序LED.C第 49 行语句前缺少分号。解决方法:语句 ET0=1 后加 ; 即: ET0=1; 现象二: 部分程序如下 : ,ET0=1;ET1=1; , 错误编号: C100、 C141 原因:程序LED.C里 53 行有中文标点符号“;”。解决方法:将中文符号改变成英文符号“; ”现象三:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 318 警告编号: L16 原因: delay2( )函数未被其它函数调用,它会占用
3、程序存放空间。解决方法:(1) 删除 delay2( )函数;(2) 检查程序,某调用该子函数;(3) 利用注释“ /* , */ ”将整个 delay2 ()函数体包含,可保留该函数但不被编译。现象四:警告 / 错误编号: C206,C267,C231 原因: delay 函数未定义,即未编写程序内容或函数已定义但未作声明。解决方法: (1) 将该子函数放在调用它的主调函数前; (2) 在调用它的主调函数前,对该函数进行声明。现象五:警告编号: C318 原因:在编译 main.c 程序过程中由于main.c 使用了头文件包含include “buzzer.h ”,但编译器却找不见buzze
4、r.h 头文件。解决方法:找到相应的buzzer.h或编写 buzzer.h文件,并存入到c:keil的相关目录中。现象六:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 319 错误编号: C237 原因: delay 函数名称重复定义,即有两个重名的函数。解决方法:改变其中一个函数的名称,使两个函数名称不相同。现象七:错误编号: C202 原因:变量 sh未作定义声明, 可能是拼写错误或是未区分大小写。解决方法: (1) 在
5、使用该变量前对该变量定义声明;(2) 在确定该变量不使用时,将其删除;(3) 改正错误的拼写。二、 Keil C51错误与警告的查询前述列举的警告和错误,仅仅是编译软件给出错误或警告的一个部分,对于大多数的错误和警告对应的原因及解决实例,读者可以参照下面的过程自行查找Keil C51 自带的帮助文件,以求解决可能出现的问题。Keil C51 错误与警告包含在名为errors.chm 的文件中,该文件一般存放在keil 安装目录中,其路径为,KeilC51HLPerrors.chm ,如下图所示。打开该文件,其中列出了600 多条错误与警告的帮助信息,读者可以自行参阅。名师资料总结 - - -精
6、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 320 三、 Keil C51 编译器常见错误与警告提示信息中英文对照表序号英文提示信息中文译文1 Ambiguous operators need parentheses 不确定的操作需要用括号括起来2 Ambiguous symbol ,xxx?不确定的符号3 Argument list syntax error 参数表语法错误4 Array bounds missing 数组界限符丢失5 Array
7、size toolarge 数组尺寸太大6 Bad character in paramenters 参数中有不适宜的字符7 Bad file name format in include directive 包含命令中有不正确的文件名格式8 Bad ifdef directive synatax 编译预处理ifdef 有语法错9 Bad undef directive syntax 编译预处理undef 有语法错10 Bit field too large 位字段太长11 Call of non-function 调用了未定义的函数12 Call to function with no pr
8、ototype 调用函数时没有函数的说明13 Cannot modify a const object 不允许修改常量对象14 Case outside of switch case 语句在 switch 语句外15 Case syntax error Case 语法错误16 Code has no effect 代码不能执行17 Compound statement missing 复合语句丢失 18 Conflicting type modifiers 不明确的类型说明符19 Constant expression required 要求常量表达式20 Constant out of ra
9、nge in comparison 在比较中常量超出范围21 Could not find file ,xxx?找不到 XXX 文件22 Declaration missing ; 声明缺少 “ ; ”23 Declaration syntax error 声明中出现语法错误24 Default outside of switch Default 出现在 switch 语句之外25 Define directive needs an identifier 定义编译预处理需要标识符26 Division by zero 用零作除数27 Do statement must have while D
10、o-while 语句中必须while 28 Enum syntax error 枚举类型语法错误29 Enumeration constant syntax error 枚举常数语法错误30 Error directive :xxx 错误的编译预处理命令31 Error writing output file 写输出文件错误32 Expression syntax error 表达式语法错误33 Extra parameter in call 调用时出现多余错误34 File name too long 文件名太长35 Function call missing ) 函数调用缺少括号“)”36
11、 Fuction definition out of place 函数定义位置错误37 Fuction should return a value 函数必需返回一个值38 Hexadecimal or octal constant too large 16 进制或 8 进制常数太大39 Illegal character ,x?非法字符 x40 Illegal initialization 非法的初始化名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - -
12、 - - - - - 321 序号英文提示信息中文译文41 Illegal Hexadecimal digit 非法的 16 进制数字42 Illegal pointer subtraction 非法的指针相减43 Illegal use of floating point 非法的浮点运算44 Illegal use of pointer 非法使用指针45 Improper use of a typedefsymbol 类型定义符号使用不恰当46 Incompatible storage class 不相容的存储类别47 Incompatible type conversion 不相容的类型转
13、换48 Incorrect number format 错误的数据格式49 Incorrect use of default Default 使用不当50 Invalid indirection 无效的间接运算51 Invalid pointer addition 无效的指针相加52 Irreducible expression tree 无法执行的表达式运算53 Lvalue required 需要逻辑值54 Macro argument syntax error 宏参数语法错误55 Macro expansion too long 宏扩展后太长56 Mismatched number of
14、 parameters in definition 定义中参数个数不匹配57 Misplaced break 此处不应出现break 语句58 Misplaced continue 此处不应出现continue 语句59 Misplaced decimal point 此处不应出现小数点60 Must be addressable 必须是可以编址的61 Must take address of memory location 必须存储定位的地址62 No declaration for function ,xxx?函数 xxx 没有声明63 No type information 没有类型信息
15、64 Not a valid expression format type 不合法的表达式格式65 Not an allowed type 不允许使用的类型66 Numeric constant too large 数值常太大67 Out of memory 内存不够用68 Parameter ,xxx? is never used参数 xxx 没有用到69 Pointer required on left side of - 符号 -的左边必须是指针70 Possible use of ,xxx? before definition在定义之前就使用了xxx(警告)71 Possibly in
16、correct assignment 赋值可能不正确72 Redeclaration of ,xxx?重复定义了xxx73 Redefinition of ,xxx? is not identicalxxx 的两次定义不一致74 Register allocation failure 寄存器定址失败75 Repeat count needs an lvalue 重复计数需要逻辑值76 Statement missing ; 语句后缺少 “ ; ”77 Sub scripting missing 下标缺少右方括号78 Symbol limit exceeded 符号超限79 Too few pa
17、rameters in call 函数调用时的实参少于函数的参数不80 Too many default cases (switch 语句中 )Default 太多81 Too many error or warning messages 错误或警告信息太多82 Too many type in declaration 声明中类型太多名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 322 序号英文提示信息中文译文83 Too m
18、uch auto memory in function 函数用到的局部存储太多84 Too much global data defined in file 文件中全局数据太多85 Two consecutive dots 两个连续的句点86 Type mismatch in parameter xxx 参数 xxx 类型不匹配87 Type mismatch in redeclaration of ,xxx?xxx 重定义的类型不匹配88 Unable to create output file ,xxx?无法建立输出文件xxx89 Unable to open include file ,
19、xxx?无法打开被包含的文件xxx90 Unable to open input file ,xxx?无法打开输入文件xxx91 Undefined label ,xxx?没有定义的标号xxx92 Undefined structure ,xxx?没有定义的结构xxx93 Undefined symbol ,xxx?没有定义的符号xxx94 Unexpected end of file in comment started on line xxx 从 xxx 行开始的注解尚未结束文件不能结束95 Unexpected end of file in conditional started on
20、line xxx 从 xxx 开始的条件语句尚未结束文件不能结束96 Unknown option 未知的操作97 Unknown preprocessor directive: ,xxx?不认识的预处理命令xxx98 Unreachable code 不能执行的代码99 Unterminated string or character constant 字符串缺少引号100 Void functions may not return a value Void 类型的函数不应有返回值101 Wrong number of arguments 调用函数的参数数目错102 ,xxx? not an
21、 argumentxxx 不是参数103 ,xxx? statement missing (xxx 语句缺少左括号104 ,xxx? statement missing )xxx 语句缺少右括号105 ,xxx? statement missing ;xxx 缺少分号106 ,xxx ?declared but never used声明了 xxx 但没有使用107 ,xxx? is assigned a value which is never used给 xxx 赋了值但未用过108 Zero length structure 结构体的长度为零名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -