keil4错误信息整合
更新时间:2024-04-11 10:43:01 阅读量: 综合文库 文档下载
第七章 错误信息
本章列出了编程中可能遇到的致命错误语法错误和警告信息每节包括一个信息 的主要说明和消除错误或警告条件可采取的措施
致命错误
致命错误立即终止编译这些错误通常是命令行指定的无效选项的结果当编译器不 能访问一个特定的源包含文件时也产生致命错 误 致命错误信息采用下面的格式 C51 FATAL-ERROR – ACTION
LINE:
FILE:
下面说明Action和Error中可能的内容
Keil Software – Cx51 编译器用户手册—第七章错误信息 190
Actions
ALLOCATING MEMORY
编译器不能分配足够的存储区来编译指定的源文件
CREATING LIST-FILE / OBJECT-FILE / WORKFILE
编译器不能建立列表文件OBJ文件或工作文件这个错误的出现可能是磁盘 满或写保护或文件已存在和只读
GENERATING INTERMEDIATE CODE
源文件包含的一个函数太大不能被编译器编译成虚拟代码尝试把函数分小或 重新编译
OPENING INPUT-FILE
编译器不能发现或打开所选的源或包含文件 PARSING INVOKE-/#PRAGMA-LINE
当在命令行检测到参数计算或在一个#pragma中检测到参数计算就产生这样 的错误
PARSING SOURCE-FILE / ANALYZING DECLARATIONS
源文件包含太多的外部参考减少源文件访问的外部变量和函数的数目 WRITING TO FILE
当写入列表文件OBJ文件或工作文件时遇到的错误
Keil Software – Cx51 编译器用户手册—第七章错误信息 191
Errors
‘(‘ AFTER CONTROL EXPECTED
一些控制参数需要用括号包含一个参数当没有左括号时显示本信息 ‘)’ AFTER PARAMETER EXPECTED 本信息表示包含没有参数的右括号 BAD DIGIT IN NUMBER
一个控制参数的数字参数包含无效字符只能是十进制数 CAN’T CREATE FILE
在FILE行定义的文件名不能建立
CAN’T HAVE GERERAL CONTROL IN INVOCATION LINE
一般控制例如EJECT 不能包含在命令行把这些控制用#pragma声明放在 源文件中
FILE DOES NOT EXIST
没有发现定义在FILE行的文件 FILE WRITE-ERROR
因为磁盘空间不够写到列表预打印工作或目标文件时出错 IDENTIFIER EXPECTED
当DEFINE控制没有参数时产生本信息DEFINE要求一个参数作为标识符这 和C语言的规则相同
MEMORY SPACE EXHAUSTED
编译器不能分配足够的存储区来编译指定的源文件如果始终出现这个信息应 该把源文件分成两个或多个小文件再重新编译 MORE THAN 100 ERRORS IN SOURCE-FILE 在编译时检测到的错误超过100个这使编译器终止 MORE THAN 256 SEGMENTS/EXTERNALS
在一个源文件中的参考超过256个单个的源文件不能有超过256个函数或外部参 考这是INTEL目标模块格式OMF-51 的历史的限制包含标量和/或bit声明 的函数在OBJ文件中生成两个有时候三个段定义
Keil Software – Cx51 编译器用户手册—第七章错误信息 192
NON-NULL ARGUMENT EXPECTED
所选的控制参数需要用括号包含一个参数例如一个文件名或一个数字 OUT OF RANGE NUMBER
一个控制参数的数字参数超出范围例如OPTIMIZE控制只允许数字0到6 值 7就将产生本错误信息
PARSE STACK OVERFLOW
解析堆栈溢出如果源程序包含很复杂的表达式或如果块的嵌套深度超过31级 就会出现这个错误
PREPROCESSOR LINE TOO LONG 32K 一个中间扩展长度超过32K字符
PREPROCESSOR MACROS TOO NESTED
在宏扩展期间预处理器所用的堆栈太大这个信息通常表示一个递归的宏定义 但也可表示一个宏嵌套太多
RESPECIFIED OR CONFLICTING CONTROL 一个命令行参数指定了两次或命令行参数冲突 SOURCE MUST COME FROM A DISK-FILE
源和包含文件必须存在控制台CON CI 或类似的设备不能作为输入文件
UNKNOWN CONTROL 所选的控制参数不认识
Keil Software – Cx51 编译器用户手册—第七章错误信息 193
语法和语义错误
语法和语义错误一般出现在源程序中它们确定实际的编程错误当遇到这些错误时 编译器尝试绕过错误继续处理源文件当遇到更多的错误时编译器输出另外的错误 信息但是不产生OBJ文件
语法和语义错误在列表文件中生成一条信息这些错误信息用下面的格式 *** ERROR number IN LINE line OF file:error message 这里
number 错误号
line 对应源文件或包含文件的行号 file 产生错误的源或包含文件名 error message 对错误的叙述说明
下表按错误号列出了语法和语义错误错误信息列出了主要说明和可能的原因和改正 号错误信息和说明 100 跳过不可打印字符0x??
在源文件中发现一个非法字符注意不检查注释中的字符 101 字符串没结束
一个字符串没有用双引号终止 102 字符串太长
一个字符串不能超过4096个字符用串联符号\\ 在逻辑上可延长字符串 超过4096个字符这个模式的行终止符在词汇分析时是连续的 103 无效的字符常数
一个字符常数的格式无效符号\\c 是无效的除非c是任何可打印的ASCII 字符
125 声明符太复杂20
一个目标的声明可包含最多20个类型修饰符[ ] * 这 个错误经常伴随着错误126
Keil Software – Cx51 编译器用户手册—第七章错误信息 194
号错误信息和说明 126 类型堆栈下溢
类型声明堆栈下溢这个错误通常死错误125的副产品 127 无效存储类
一个目标用一个无效的存储空间标识符声明如果一个目标在一个函数外用存 储类auto或register声明就会产生本错误 129 在标记前缺少
本错误通常表示前一行缺少分号当出现本错误时编译器会产生很多错误信 息
130 值超出范围
在一个using或interrupt标识符后的数字参数是无效的using标识符要求一个0 到3之间的寄存器组号interrupt标识符要求一个0到31之间的中断矢量号 131 函数参数重复
一个函数有相同的参数名在函数声明中参数名必须是唯一的 132 没在正式的参数列表
一个函数的参数声明用了一个名称没在参数名列表中例如 char function(v0,v1,v2) char *v0,*v1,*v5;
/* ‘v5’没在正式列表中 */ {
/* … */ }
134 函数的xdata/idata/pdata/data不允许
函数通常位于code存储区不能在别的存储区运行函数默认定义为存储类型 code
135 bit的存储类错
bit标量的声明可能包含一个static或extern存储类register或alien类是无效的 136 变量用了void
void类型只允许作为一个不存在的返回值或一个函数的空参数列表void func(void) 或和一个指针组合void * 138 Interrupt()不能接受或返回值
一个中断函数被定义了一个或多个正式的参数或一个返回值中断函数不能 包含调用参数或返回值 140 位在非法的存储空间
bit标量的定义可以包含可选的存储类型data 如果没有存储类型则默认为 data 因为位通常在内部数据存储区当试图对一个bit标量定义别的数据类型 时会产生本错误
141 临近标志语法错误期待别的标志…
编译器所见的标志是错误的参考所显示的期待的内容 142 无效的基地址
一个sfr或sbit声明的基地址是错误的有效的基地址范围在0x80到0xFF之间 如果用符号基地址^位号声明则基地址必须是8的倍数
Keil Software – Cx51 编译器用户手册—第七章错误信息 195
号错误信息和说明 143 无效的绝对位地址
sbit声明中的绝对位地址必须在0x80到0xFF之间 144 基地址^位号无效的位号
sbit声明中定义的位号必须在0到7之间 145 未知的sfr 146 无效sfr
一个绝对位基地址^位号的声明包含一个无效的基地址标识符基地址必 须是已经声明的sfr 任何别的名称是无效的 147 目标文件太大
单个目标文件不能超过65535 64K字节-1 149 struct/union包含函数成员
struct或union不能包含一个函数类型的成员但是指向函数的指针是可以的 150 struct/union包含一个bit成员
一个union不能包含bit类型成员这是8051的结构决定的 151 struct/union自我关联 一个结构不能包含自己 152 位号超出位域
位域声明中指定的位号超过给定基类的位号 153 命名的位域不能为零
命名的位域为零只要未命名的位域允许为零 154 位域指针
指向位域的指针不允许 155 位域要求char/int
位域的基类要求char或int unsigned char和unsigned int类型也行 156 alien只允许对函数 157 alien函数带可变参数
存储类alien只对外部PL/M-51函数允许符号char *,… 在alien函数中是非 法的PL/M-51函数通常要求一个固定的参数表 158 函数包含未命名的参数
一个函数的参数列表定义包含一个未命名的抽象类型定义这个符号只允许在 函数原型中
159 void后面带类型
函数的原型声明可包含一个空参数列表例如int func(void) 在void后不 能再有类型定义 160 void无效
void类型只在和指针组合或作为一个函数的不存在的返回值中是合法的 161 忽视了正式参数
在一个函数内一个外部函数的声明用了一个没有类型标识符的参数名列表例 如extern yylex(a,b,c);
Keil Software – Cx51 编译器用户手册—第七章错误信息 196
号错误信息和说明 180 不能指向一个函数
指向一个函数的类型是无效的尝试用指针指向一个函数 181 操作数不兼容
对给定的操作符至少一个操作数类型是无效的例如~float_type 183 左值不能修改
要修改的目标位于code存储区或有const属性因此不能修改 184 sizeof 非法操作数
sizeof操作符不能确定一个函数或位域的大小 185 不同的存储空间
一个目标声明的存储空间和前一个同样目标声明的存储空间不同 186 解除参照无效
一个内部编译器问题会产生本信息如果本错误重复出现请和技术支持接洽 187 不是一个左值
所需的参数必须是一个可修改的目标地址 188 未知目标大小
因为没有一个数组的维数或间接通过一个void指针一个目标的大小不能计
算
189 & 对bit/sfr非法
取地址符’&’ 不允许对bit目标或特殊函数寄存器sfr 190 & 不是一个左值
尝试建立一个指针指向一个未知目标 193 非法操作类型 193 对ptr非法add/sub 193 对bit的非法操作 193 错误操作数类型
当对一个给定的操作符用了非法的操作数类型时产生本错误例如无效的表 达式如bit*bit ptr+ptr 或ptr*anything 这个错误信息包括引起错误的操作 符
下面的操作对bit类型的操作数是可行的 ", 赋值= ", OR/复合OR | |= ", AND/复合AND & &= ", XOR/复合XOR ^ ^= ", bit比较= = != ", 取反~
bit操作数可和别的数据类型在表达式中混用在这种情况类型转换自动执行 194 * 间接指向一个未知大小的目标
间接操作符*不能和void指针合用因为指针所指的目标的大小是未知的 195 * 间接非法
*操作符不能用到非指针参数
Keil Software – Cx51 编译器用户手册—第七章错误信息 197
号错误信息和说明 196 存储空间可能无效
转换一个常数到一个指针常数产生一个无效的存储空间例如 char *p=0x91234
198 sizeof返回零
sizeof操作符返回一个零
199 ->’的左边要求struct/union指针
->操作符的左边参数必须是一个struct指针或一个union指针 200 . 左边要求struct/union
.操作符的左边参数要求必须是struct或union类型 201 未定义的struct/union
给定的struct或union名是未知的 202 未定义的标识符 给定的标识符是未定义的 203 错误的存储类参考名
本错误表示编译器的一个问题如果重复出现请接洽技术支持 204 未定义的成员
给定的一个struct或union成员名是未定义的 205 不能调用一个中断函数
一个中断函数不能象一个正常函数一样调用中断的入口和退出代码是特殊 的
207 参数列表声明为void
参数列表声明为void的函数不能从调用者接收参数 208 太多的实参
函数调用包含太多的实参 209 太少的实参
调用函数包含太少的实参 210 太多的嵌套调用
函数的嵌套调用不能超过10级 211 调用不是对一个函数
一个函数的调用项不是对一个函数或函数指针求值 212 间接调用寄存器的参数不匹配
通过一个指针的间接函数调用不包含实际的参数一个例外是当所有的参数可 以通过寄存器传递这是由于Cx51所用的传递参数的方法被调用的函数名 必须是已知的因为参数写到被调用函数的数据段但是对间接调用来说 被调用函数的名称是未知的 213 赋值符的左边不是一个左值
赋值符的左边要求一个可修改目标的地址 214 非法指针转换
bit float或集合类型的目标不能转换为指针 215 非法类型转换
struct/union/void不能转换为任何别的类型
Keil Software – Cx51 编译器用户手册—第七章错误信息 198
号错误信息和说明 216 标号用在非数组中或维数超出
一个数组引用包含太大的维数或目标不是一个数组 217 非整数索引
一个数组的维数表达式必须是char unsigned char int 或unsigned int类型 别的类型都是非法的
218 控制表达式用了void类型
在一个while for 或do的限制表达式中不能用类型void 219 long常数缩减为int
一个常数表达式的值必须能用一个int类型表示 220 非法常数表达式
期望一个常数表达式目标名变量或函数不允许出现在常数表达式中 221 非常数case/dim表达式
一个case或一个维数[ ] 必须是一个常数表达式 222 被零除 223 被零取模
编译器检测到一个被零除或取模 225 表达式太复杂需简化
一个表达式太复杂必须分成两个或多个子表达式 226 重复的struct/union/enum标记
一个struct union 或enum名早已定义 227 表示一个union标记
一个union名称早已定义为别的类型 228 表示一个struct标记
一个struct名早已定义为别的类型 229 表示一个enum标记
一个enum名早已定义为别的类型 230 未知的struct/union/enum标记 指定的struct union 或enum名未定义 231 重复定义
指定的名称已被定义 232 重复标号 指定的标号已定义 233 未定义标号
表示一个标号未定义有时候这个信息会在实际的标号的几行后出现这是所 用的未定义标号的搜索方法引起的 234 { 堆栈范围溢出31
超过了最多31个嵌套块超出的嵌套块被忽略 235 参数<数字> 不同类型
函数声明的参数类型和函数原型中的不同
Keil Software – Cx51 编译器用户手册—第七章错误信息 199
号错误信息和说明 236 参数列表的长度不同
函数声明中的参数数目和函数原型中的不同 237 函数早已定义
试图声明一个函数体两次 238 重复成员 239 重复参数
试图定义一个已存在的struct成员或函数参数 240 超出128个局部bit
在一个函数内不能超过128个bit标量 241 auto段太大
局部目标所需的空间超过模式的极限最大的段大小定义如下 SMALL 128字节 COMPACT 256字节 LARGE 65535字节 242 太多的初始化软件
初始化软件的数目超过初始化目标的数量 243 字符串超出范围
字符串中的字符数目超出字符串初始化的数目 244 不能初始化错误的类型或类 试图初始化一个bit或sfr
245 未知的pragma 跳过本行 #pragma状态未知所以整行被忽略
246 浮点错误
当一个浮点参数超出32位的范围就产生本错误32位IEEE值的范围是 ±1.175494E-38到±3.402823E+38 247 非地址/常数初始化
一个有效的初始化表达式必须是一个常数值求值或一个目标名加或减去一个常 数
248 集合初始化需要大括号
给定struct或union初始化缺少大括号{} 249 段<名> 段太大
编译器检测到一个数据段太大一个数据段的最大的大小由存储空间决定 250 \\esc 值超过255
一个字符串常数中的转义序列超过有效值范围最大值是255 252 非法八进制数
指定的字符不是一个有效的八进制数 252 主要控制放错地方行被忽略
主要控制必须被指定在C模块的开头在任何#include命令或声明前
Keil Software – Cx51 编译器用户手册—第七章错误信息 200
号错误信息和说明 253 内部错误ASMGEN\\CLASS 在下列情况下出现本错误 ", 一个内在函数例如_testbit_ 被错误激活这种情况是在没有函数原 型存在和实参数目或类型错误对这种原因必须使用合适的声明文件 INTRINS.H STRING.H 参考第八章中的instrinsic函数 ", Cx51确认一个内部一致性问题请接洽技术支持 255 switch表达式有非法类型
在一个switch表达式没有合法的数据类型 256 存储模式冲突
一个包含alien属性的函数只能包含模式标识符small 函数的参数必须位于内 部数据区这适用于所有的外部alien声明和alien函数例如 alien plm_func(char c) large {…} 产生错误256
257 alien函数不能重入
一个包含alien属性的函数不能同时包含reentrant属性函数参数不能跳过虚拟 堆栈传递这适用于所有的外部alien声明和alien函数 258 struct/union成员的存储空间非法 非法空间的参数被忽略
一个结构的成员或参数不能包含一个存储类型标识符但指针所指的目标可 能包含一个存储类型例如
struct vp{char code c;int xdata i; }; 产生错误258
struct v1{char c;int xdata *i; }; 是正确的struct声明
259 指针不同的存储空间
一个空指针被关联到别的不同存储空间的空指针例如
char xdata *p1; char idata *p2;
p1 = p2; /* 不同的存储空间 */ 260 指针断开
一个空指针被关联到一些常数值这些值超过了指针存储空间的值范围例如 char idata *p1 = 0x1234; /* 结果是0x34 */
Keil Software – Cx51 编译器用户手册—第七章错误信息 201
号错误信息和说明 261 reentrant()内有bit
一个可重入属性的函数的声明中不能包含bit目标例如 int func1(int i1) reentrant { bit b1,b2; /* 不允许 */ return(i1-1); }
262 using/disable 不能返回bit值
用using属性声明的函数和禁止中断#pragma disable 的函数不能返回一个bit 值给调用者例如 bit test(void) using 3 {
bit b0; return(b0); }
产生错误262
263 保存/恢复堆栈保存溢出/下溢
#pragma save的最大嵌套深度是八级堆栈的pragma save和restore工作根据 LIFO 后进先出规则
264 内在的<内在的名称> 声明/激活错误
本错误表示一个内在的函数错误定义参数数目或省略号如果用标准的.H 文件就不会产生本错误确认使用了Cx51所有的.H文件不要尝试对内在的 库函数定义自己的原型 265 对非重入函数递归调用
非重入函数不能被递归调用因为这样会覆盖函数的参数和局部数据如果需 要递归调用需声明函数为可重入函数 267 函数定义需要ANSI类型的原型
一个函数被带参数调用但是声明是一个空的参数列表原型必须有完整的参 数类型这样编译器就可能通过寄存器传递参数和适合应用的调用机制 268 任务定义错误任务ID/优先级/using 任务声明错误
271 asm/endasm 控制放错地方
asm和endasm声明不能嵌套endasm要求一个汇编块前面用asm开头例如 #pragma asm ...
汇编指令
... #pragma endasm
Keil Software – Cx51 编译器用户手册—第七章错误信息 202
号错误信息和说明 272 asm 要求激活SRC控制
在一个源文件中使用asm和endasm 要求文件用SRC控制编译那么编译器就 会生成汇编源文件然后可以用A51汇编 273 asm/endasm 在包含文件中不允许
在包含文件中不允许asm和endasm 为了调试在包含文件不能有任何的可执 行代码
274 非法的绝对标识符
绝对地址标识符对位目标函数和局部函数不允许地址必须和目标的存储 空间一致例如下面的声明是无效的因为间接寻址的范围是0x00到0xFF idata int _at_ 0x1000; 278 常数太大
当浮点参数超出32位的浮点值范围就产生本错误32位IEEE值的范围是 ±1.175494E-38到±3.402823E+38 279 多次初始化
试图多次初始化一个目标 280 没有使用符号/标号/参数
在一个函数中声明了一个符号标号或参数但没有使用 281 非指针类型转换为指针
引用的程序目标不能转换成一个指针 282 不是一个SFR引用
本函数调用要求一个SFR作为参数 283 asmparms 参数不适合寄存器 参数不适合可用的CPU寄存器
Keil Software – Cx51 编译器用户手册—第七章错误信息 203
284 <名称> 在可覆盖空间函数不再可重入
一个可重入函数包含对局部变量的明确的存储类型标识符函数不再 完全可重入 300 注释未结束
一个注释没有一个结束符*/ 301 期望标识符
一个预处理器命令期望一个标识符 302 误用#操作符
字符操作符# 没有带一个标识符 303 期望正式参数
字符操作符# 没有带一个标识符表示当前所定义的宏的一个正式 参数名
304 错误的宏参数列表
宏参数列表没有一个大括号逗号分开的标识符列表 305 string/char 常数未结束
一个字符串活字符常数是无效的典型的后引号丢失 306 宏调用未结束
预处理器在收集和扩展一个宏调用的实际的参数时遇到输入文件的结
尾
Keil Software – Cx51 编译器用户手册—第七章错误信息 204
号错误信息和说明 307 宏名称参数计算不匹配
在一个宏调用中实际的参数数目和宏定义的参数数目不匹配本错 误表示指定了太少的参数 308 无效的整数常数表达式
一个if/elif 命令的数学表达式包含一个语法错误 309 错误或缺少文件名
在一个include 命令中的文件名参数是无效的或没有 310 条件嵌套过多20
源文件包含太多的条件编译嵌套命令最多允许20 级嵌套 311 elif/else 控制放错地方 312 endif 控制放错地方
命令elif else 和endif 只有在if ifdef 或ifndef 命令中是合法的 313 不能清除预定义的宏名称
试图清除一个预定义宏用户定义的宏可以用#undef 命令删除预定 义的宏不能清除 314 #命令语法错误
在一个预处理器命令中字符# 必须跟一个新行或一个预处理器 命令名例如if/define/ifdef … 315 未知的#命令名称 预处理器命令是未知的 316 条件未结束
到文件结尾endif 的数目和if 或ifdef 的数目不匹配 318 不能打开文件文件名 指定的文件不能打开
319 文件不是一个磁盘文件
指定的文件不是一个磁盘文件文件不能编辑 320 用户自定义的内容
本错误号未预处理器的#error 命令保留#error 命令产生错误号320 送出用户定义的错误内容终止编译器生成代码 321 缺少<字符>
在一个include 命令的文件名参数中缺少结束符例如 #include 一个宏的正参只能定义一次 326 宏体不能以## 开始或结束 ## 不能是一个宏体的开始或结束 327 宏宏名超过50 个参数 每个宏的参数数目不能超过50 Keil Software – Cx51 编译器用户手册—第七章错误信息 205 警告 警告产生潜在问题的信息他们可能在目标程序的运行过程中出现警告不妨碍源文 件的编译 警告在列表文件中生成信息警告信息用下面的格式 *** WARNING number IN LINE line OF file: warning message 这里 number 错误号 line 在源文件或包含文件中的对应行号 file 错误产生的源或包含文件名 warning message 警告的内容 下表按号列出了警告警告信息包括一个主要的内容和可能的原因和纠正措施 号警告信息和说明 173 缺少返回表达式 一个函数返回一个除了int 类型以外的别的类型的值必须包含一个 返回声明包括一个表达式为了兼容旧的程序对返回一个int 值 的函数不作检查 182 指针指向不同的目标 一个指针关联了一个不同类型的地址 185 不同的存储空间 一个目标声明的存储空间和前面声明的同样目标的存储空间不同 196 存储空间可能无效 把一个无效的常数值分配给一个指针无效的指针常数是long 或 unsigned long 编译器对指针采用24 位3 字节低16 位代表偏移 高8 位代表选择的存储空间 198 sizeof 返回零 一个目标的大小计算结果为零如果目标是外部的或如果一个数组 的维数没有全知道则值是错误的 Keil Software – Cx51 编译器用户手册—第七章错误信息 206 号警告信息和说明 206 缺少函数原型 因为没有原型声明被调用的函数是未知的调用一个未知的函数通 常是危险的参数的数目和实际要求不一样如果是这种情况函数 调用不正确 没有函数原型编译器不能检查参数的数目和类型要避免这种警告 应在程序中包含函数的原型 函数原型必须在函数被调用前声明注意函数定义自动生成原型 209 实参太少 在一个函数调用中包含太少的实参 219 long 常数被缩减为int 一个常数表达式的值必须能被一个int 类型所表示 245 未知的pragma 本行被忽略 #pragma 声明是未知的因此整行程序被忽略 258 struct/union 成员的存储空间方法 参数的存储空间被忽略 一个结构的成员或一个参数不能指定存储类型但是指针所指的目 标可以包含一个存储类型例如 struct vp{ char code c;int xdata i; }; 产生警告258 struct v1{ char c;int xdata *i; }; 对struct 是正确的声明 259 指针不同的存储空间 两个要比较的指针没有引用相同的存储类型的目标 260 指针折断 把一个指针转换为一个更小偏移区的指针转换会完成但大指针的 偏移会折断来适应小指针 261 bit 在重入函数 一个reentrant 函数不能包含bit 因为bit 标量不能保存在虚拟堆栈中 265 名称对非重入函数递归调用 发现对一个非重入函数直接递归这可能是故意的但对每个独立的 情况进行功能性检查通过生成的代码间接递归由连接/定位器检 查 Keil Software – Cx51 编译器用户手册—第七章错误信息 207 号警告信息和说明 271 asm/endams 控制放错地方 asm 和endasm 不能嵌套endasm 要求一个以asm 声明开头的汇编块 例如 #pragma asm ... 汇编指令 ... #pragma endasm 275 表达式可能无效 编译器检测到一个表达式不生成代码例如 void test(void) { int i1,i2,i3; i1,i2,i3; /* 死表达式 */ i1 << i3; /* 结果未使用 */ } 276 常数在条件表达式 编译器检测到一个条件表达式有一个常数值在大多数情况下是一个 输入错误例如 void test(void) { int i1,i2,i3; if( i1 = 1) i2 = 3; /* 常数被赋值 */ while( i3 = 2); /* 常数被赋值 */ } 277 指针有不同的存储空间 一个typedef 声明的存储空间冲突例如 typedef char xdata XCC; /* 存储空间xdata */ typedef XCC idata PICC; /* 存储空间冲突 */ 280 符号/标号未使用 一个符号或标号定义但未使用 307 宏名称参数计算不匹配 一个宏调用的实参的数目和宏定义的参数数目不匹配表示用了太多 的的参数过剩的参数被忽略 317 宏名称重新定义无效 一个预定义的宏不能重新定义或清除参考138 页的预定义宏常数 322 未知的标识符 在一个#if 命令行的标识符未定义等效为FALSE 323 期望新行发现多余字符 一个#命令行正确但包含多余的非注释字符例如 #include Keil Software – Cx51 编译器用户手册—第七章错误信息 208 号警告信息和说明 324 期望预处理器记号 期望一个预处理器记号但输入的是一个新行例如#line 这里缺 少#line 命令的参数 Keil__
正在阅读:
keil4错误信息整合04-11
设计招标文件(DOC)09-16
复备二年级上册5单元导案-陈红05-15
高二数学期中考试模拟卷03-06
计算分析题04-15
开机提示网络上有重名的解决方法02-09
中石化油库安全评价报告01-18
我的小表弟作文450字06-17
八年级第二节2013分解 - 图文01-05
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 整合
- 错误
- keil4
- 信息
- 鲁DQ-024.1电气照明通电试运行记录
- 1.1.3认识钟表(几时半)
- H3C三层交换机配置命令
- 123003订单班《药品仓储与养护技术》复习题
- 工程建设安全强制性标准的主要内容
- 廖老师网上千题解答251-300题
- 高考语文一轮复习每日一题第06周每周一测08171106(含答案)
- 中国地方政府投融资
- 最新精品山东省 - 2017年 - 教师招聘 - 历年真题和模拟考卷 - -
- IBMThinkPad T42 开机Fan error错误,风扇加油全过程
- (超详细)高一信息技术教案-浙教版 - 图文
- 非煤矿山安全培训教案
- 七年级英语上学期期中复习专题练习(阅读理解) 牛津版
- 中国银行业监督管理委员会办公厅关于印发《银行业重要信息系统突
- CAD中级第一单元到第四单元解答参考
- 枯草芽孢杆菌产淀粉酶试验
- 使用块的优化访问方式(西门子博途)
- 探究深刻意蕴类习题
- 干部队伍存在的问题及对策
- 关于创新高校思想政治道德教育的思考 doc