初级会员

- 积分
- 124
- 金钱
- 124
- 注册时间
- 2016-4-3
- 在线时间
- 41 小时
|
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 参数<数字> 不同类型
函数声明的参数类型和函数原型中的不同
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命令或声明前
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 */
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
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寄存器
284 <名称>:在可覆盖空间函数不再可重入
一个可重入函数包含对局部变量的明确的存储类型标识符函数不再
完全可重入
300 注释未结束
一个注释没有一个结束符*/
301 期望标识符
一个预处理器命令期望一个标识符
302 误用#操作符
字符操作符# 没有带一个标识符
303 期望正式参数
字符操作符# 没有带一个标识符表示当前所定义的宏的一个正式
参数名
304 错误的宏参数列表
宏参数列表没有一个大括号逗号分开的标识符列表
305 string/char 常数未结束
一个字符串活字符常数是无效的典型的后引号丢失
306 宏调用未结束
预处理器在收集和扩展一个宏调用的实际的参数时遇到输入文件的结
尾
号错误信息和说明
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<stdio.h
325 正参名称重复
一个宏的正参只能定义一次
326 宏体不能以## 开始或结束
## 不能是一个宏体的开始或结束
327 宏宏名超过50 个参数
每个宏的参数数目不能超过50
警告
警告产生潜在问题的信息他们可能在目标程序的运行过程中出现警告不妨碍源文
件的编译
警告在列表文件中生成信息警告信息用下面的格式
*** 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 返回零
一个目标的大小计算结果为零如果目标是外部的或如果一个数组
的维数没有全知道则值是错误的
号警告信息和说明
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 名称对非重入函数递归调用
发现对一个非重入函数直接递归这可能是故意的但对每个独立的
情况进行功能性检查通过生成的代码间接递归由连接/定位器检
查
号警告信息和说明
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 <stdio.h> foo
324 期望预处理器记号
期望一个预处理器记号但输入的是一个新行例如#line 这里缺
少#line 命令的参数
|
|