Keil中的常见错误和警告 下载本文

*ERROR 249:segment:segment too large

编译器检测到过大的数据段,最大数据段长取决于存储器空间 *ERROR 250:‘\\esc’;value exceeds 255

串常数中\\esc转义序列的值超过有效域 *ERROR 251:illegal octal digit

不是有效的八进制数字

*ERROR 252:misplace primary control、line ignored

一次性使用的编译控制伪指令必须在 C模块开头指定,在#INCLUDE 语句和变量说明之前

*ERROR 253:internal ERROR(ASMGEN\\CLASS)

这种错误在以下情况下发生 ⑴内部函数(如 testbit)被不正确激活。它发生在函数原型和

实参表不存在匹配问题的时候。基于这个原因,头文件中的使用要适当(intrins.h,string.h) ⑵ C51识别出存在内部一致性错误,请向您的销售代理商查询 *ERROR 255:switch expression has illegal type

Switch语句中的case语句必须具有类型(u)char,(u)int 或(u)short,其他类型不允许(如 bit)

*ERROR 256:conflicting memory model

Alien 属性的函数只能使用 SMALL模式。函数的参数必须位于内部数据存储空间

*ERROR 257:alien function can not be reentrant

“alien”属性的函数不能同时具有“reentrant”属性,函数的参数不能通过重入栈传递,这

也适用于外部“alien”声明和“alien”函数

*ERROR 258:mspace illegal on struct/union member

不能为结构联合成员指定存储空间,但指向对象的指针可以 *ERROR 259:pointer: different mspace

当为指针赋值或做指针比较时,指针未指向存储在同一存储空间的对象时,会产生错误或者 警告。如:

Char xdata *px;/*px to char in xdata memory*/ Char code *pc;/*pc to char in code memory*/ Void main() { char c;

If(px==pc)++c;/*warning 259*/ }

*ERROR 260:pointer truncation

指针转换时部分偏移量被截断,此时指针常量(如 char xdata)转为一个具有较小偏移区的

指针(如 char idata)

*ERROR 261:bit in reentrant function

重入函数不能包含位变量,因为位变量不能存于重入栈,而只能位于MCS51CPU的可位寻

址存储区中如: Void test () reentrant { bit b0;/*illegal*/ Static bit b1;/*legal*/ }

*ERROR 262:’using/disable’: function returns bit

使用属性 using选择寄存器组的函数或使用关中断(#pragma disable)功能的函数不能返回 bit类型。如:

Bit test ()using 3/*error 261*/ { bit b0; return(b0); }

*ERROR 263:save-stack overflow/underflow

“#pragama save”最大嵌套级为 8 级。Save 和 restore 指令按 FIFO 原则工作

*ERROR 264:intrinsic:declaration/ activation error 内部参数定义不正确

*ERROR 265:recursive call to non_reentrant function

发现非重入函数被递归调用。直接递归用生成代码可有效查出,间接递归调用由 L51 发现

L51 连接定位器使用错误提示

Error 267 :’DelayX1ms ‘:requires ANSI-style prototype C:\\8051\\INPUT.C

说明:程序中有调用 DelayX1ms 函数,但该函数没定义即未编写程序内容或函数已定义但未作 声明

解决方法:编写 DelayX1ms 的内容,编写完后也要作声明或作外部声明,可在 delay.h 的包

含文件声明成外部函数以便其它函数调用。 Error 268:任务定义错误任务ID/优先级/using 任务声明错误

Error 271: asm/endasm 控制放错地方

asm和 endasm声明不能嵌套endasm要求一个汇编块前面用 asm开头例如 #pragma asm ...

汇编指令

... #pragma endasm

Error 272: asm 要求激活 SRC控制

在一个源文件中使用asm和endasm 要求文件用SRC控制编译那么编译器就会生成汇编源文件

然后可以用 A51汇编

Error 273: asm/endasm 在包含文件中不允许

在包含文件中不允许 asm和 endasm 为了调试在包含文件不能有任何的可执行代码

Error 274: 非法的绝对标识符

绝对地址标识符对位目标函数和局部函数不允许地址必须和目标的存储空间一致,例如下面的

声明是无效的, idata int _at_ 0x1000; 因为间接寻址的范围是 0x00到 0xFF Error 278: 常数太大

当浮点参数超出32位的浮点值范围就产生本错误32位IEEE值的范围是±1.175494E-38到± 3.402823E+38

Error 279: 试图多次初始化一个目标 Error 280: 没有使用符号/标号/参数

在一个函数中声明了一个符号标号或参数但没有使用 Error 281: 非指针类型转换为指针

引用的程序目标不能转换成一个指针 Error 282: 不是一个 SFR引用

本函数调用要求一个 SFR作为参数 Error 283: asmparms 参数不适合寄存器 参数不适合可用的 CPU寄存器

Error 284: <名称>:在可覆盖空间函数不再可重入

一个可重入函数包含对局部变量的明确的存储类型标识符函数不再完全可重入 Error 300: 注释未结束

一个注释没有一个结束符*/ Error 301: 期望标识符

一个预处理器命令期望一个标识符 Error 302: 误用#操作符

字符操作符# 没有带一个标识符 Error 303: 期望正式参数

字符操作符# 没有带一个标识符表示当前所定义的宏的一个正式参数名 Error 304: 错误的宏参数列表

宏参数列表没有一个大括号逗号分开的标识符列表 Error 305: string/char 常数未结束

一个字符串活字符常数是无效的典型的后引号丢失 Error 306: 宏调用未结束

预处理器在收集和扩展一个宏调用的实际的参数时遇到输入文件的结尾 Error 307: 宏名称参数计算不匹配

在一个宏调用中实际的参数数目和宏定义的参数数目不匹配本错误表示指定了太少的参数

Error 308: 无效的整数常数表达式

一个 if/elif 命令的数学表达式包含一个语法错误 Error 309: 错误或缺少文件名

在一个 include 命令中的文件名参数是无效的或没有 Error 310: 条件嵌套过多 20

源文件包含太多的条件编译嵌套命令最多允许 20 级嵌套 Error 311: elif/else 控制放错地方 Error 312: endif 控制放错地方

命令 elif else 和 endif 只有在 if ifdef 或 ifndef 命令中是合法的 Error 313: 不能清除预定义的宏名称

试图清除一个预定义宏用户定义的宏可以用#undef 命令删除预定义的宏不能清除

Error 314: #命令语法错误

在一个预处理器命令中字符# 必须跟一个新行或一个预处理器命令名例如 if/define/ifdef

Error 315: 未知的#命令名称

预处理器命令是未知的 Error 316: 条件未结束

到文件结尾 endif 的数目和 if 或 ifdef 的数目不匹配

Compling :C:\\8051\\MANN.C

Error:318:can’t open file ‘beep.h’ // 不能打开文件文件名

说明:在编译 C:\\8051\\MANN.C 程序过程中由于main.c 用了指令#include “beep.h”,但却

找不到所致,解决方法编写一个 beep.h 的包含文件并存入到 c:\\8051 的工作目录中 Error 319:文件不是一个磁盘文件

指定的文件不是一个磁盘文件文件不能编辑 Error 320: 用户自定义的内容

本错误号未预处理器的#error 命令保留#error 命令产生错误号 320送出用户定义的错误内

容终止编译器生成代码 Error 321: 缺少<字符>

在一个 include 命令的文件名参数中缺少结束符例如#include

Error 325: 正参名称重复

一个宏的正参只能定义一次 Error 326: 宏体不能以## 开始或结束 Error 327: 宏名超过 50 个参数

每个宏的参数数目不能超过 50

L51连接错误(与代码语法错误不同)

*ERROR101: SEGMENT COMBINATION ERROR SEGMENT:segment_name

MODULE:filename(modulename)

由于连接错误所给段未能连入类型总段,并被忽略 *ERROR102:EXTERN ATTRIBUTE MISMATCH SYMBOL:external_name

MODULE:filename(modulename) 所给外部符号名属性错,并被忽略

*ERROR103:EXTERN ATTRIBUTE DO NOTMATCH PUBLIC SYMBOL:public_name