当前位置:首页 > 单片机 > 单片机
[导读]keil错误;C51编译器识别错类型有三种;1、致命错误:伪指令控制行有错,访问不存在的原文;2、语法及语义错误:语法和语义错误都发生在原文件;3、警告:警告出现并不影响目标文件的产生,但执行;C_51FATAL_ERRORA

keil错误;C51编译器识别错类型有三种;1、致命错误:伪指令控制行有错,访问不存在的原文;2、语法及语义错误:语法和语义错误都发生在原文件;3、警告:警告出现并不影响目标文件的产生,但执行;C_51FATAL_ERRORACTION:&l;ERROR:<错误信息>termin;FILE:<错误所在文件>;ERROR:<错误信

keil错误

C51编译器识别错类型有三种

1、致命错误:伪指令控制行有错,访问不存在的原文件或头文件等。

2、语法及语义错误:语法和语义错误都发生在原文件中。有这类错误时,给出 提示但不产生目标文件,错误超过一定数量才终止编译。

3、警告:警告出现并不影响目标文件的产生,但执行时有可能发生问题。程序 员应斟酌处理。 D.1 致命错误

C_51 FATAL_ERROR ACTION: <当前行为> LINE: <错误所在行>

ERROR: <错误信息> terminated 或C_51 FATAL ERROR ACTION: <当前行为>

FILE: <错误所在文件>

ERROR: <错误信息> terminated C_51 TERMINATED C_51 (1) ACTION 的有关信息

*PARSING INVOKE-/#PRAGMA_LINE

在对#pragma 指明的控制行作此法分析时出错。 *ALLOCATING MEMORY

系统分配存储空间时出错。编译较大程序需要512k空间。 *OPENING INPUT_FILE

打开文件时,未找到或打不开源文件/头文件。

*CREATE LIST_FILE/OBJECT_FILE/WORK_FILE 不能创建上述文件。可能磁盘满或文件已存在而且写保护。 *PARSING SOURCE_FILE/ANALYZING DECLARATIONS

分析源程序时发现外部引用名太多。 *GENERATING INTERMEDIATE CODE

源代码被翻译成内部伪代码,错误可能来源于函数太大而超过内部极限。 *WRITING TO FILE

在向文件(work,list,prelist或object file)写时发生错误。 (2)ERROR的有关信息

*MEMORY SPACE EXHAUSTED

所有可用系统空间耗尽。至少需要512k 字节空间。没有足够空间,用户必须检查常驻内存 的驱动程序是否太多。 *FILE DOES NOT EXIST FILE 行定的文本文件名未发现。 *CAN?T CREAT FILE

FILE行定义的文件不能被创建。

*SOURCE MUST COME FROMA DISK_FILE

源文件和头文件必须存在于硬盘或软盘上。控制台、CON、CI 或类似设备不允许作为输入 文件。

*MORE THAN 256 SEGMENTS/PUBLICS/EXTERNALS

受OMF_51的历史限制,一个源程序不能超过256个各种函数的类型段,256个全局变量, 256 个公共定义或外部引用名。不使用为变量可以减少使用的段数。使用static 存储类型说

明符可减少全局变量的使用数目。合理调整定义性说明的位置可减少外部引用名的使用数 目。

*FILEWRITE ERROR

当向list、prelist、work或object文件中写内容时,由于空间不够而发生错误。 *NON_NULLARGUMENT EXPECTED

所选的控制参数需要一个括号内的变量,如一个文件夹或一个数。 *“(”AFTER CONTROL EXPECTED 变量的左括号丢失。

*“)”AFTER PARAMETER EXPECTED 变量的右括号丢失。

*RESPECIFIED OR CONFLICTING CONTROL

所选的控制参数与前面发生冲突或重复,例如CODE和NOCOND *BAD DECIMAL NUMBER

控制参数的数字含有非法数,需要使用十进制数。 *OUT OF RANGE DECIMAL NUMBER

控制参数的数字越界,例如OPTIMIZE 的参量为0-5。

*IDENTIFIER EXPECTED

控制参数DEFINE 需要一个标识符做参量,与C语言的规则相同。

*PARSE STACK OVERFLOW

分析栈溢出。可能是源程序包含特别复杂的表达式,或功能块嵌套数超过15。 *PREPOCESSOR: MACRO TO NESTED

宏扩展期间,预处理器的栈耗用太大。表明宏嵌套太多,或有递归宏定义。 *PREPOCESSOR: LINE TOO LONG(510) 宏扩展后行超过510个字符。

*CAN?T HAVE GENERAL CONTROL IN INVOCATION LINE

一般控制(如EJECT)不能是命令行的一部分,应将它们放入源文件“pragma”预处理行 中。

D.2 语法及语义错误 D.2.1 错误格式

这类错误在列表文件中产生如下格式的信息:

***ERRORIN LINEOF:error message ***WARINGIN LINEOF:warning message 表示错误行;

表示源文件或头文件中与错误或警告相关的行; 指明了错误所在的源文件或头文件; D.2.2 错误信息及可能发生的原因

*ERROR100:unprintable character 0x??skipped

源文件中发现非法字符(注意,注解内的字符不做检查)。 *ERROR101:unclosed string 串未用引号结尾。

*ERROR 102:string too long

串不得超过511 个字符。为了定义更长的串,用户必须使用续行符??逻辑的继续该串, 在词汇分析时遇到以该符号结尾的行会与下行连接起来。 *ERROR 103: invalid character constant

试图再声明一个已定义的宏,已存在的宏可以用#undef指令删除。预定义的宏不能删除。 *ERROR 104: identifier expected

预处理器指令期望产生一个标示符,如ifdef。 *ERROR 105: unclosed comment

当注解无结束界定符(*/)时产生此错误。 *EROOR 106: unbalanced#if-endif controls endif的数量与if或ifdef的数量不匹配。 *ERROR 107:include file nesting exceeds 9 include指令后的文件名无效或丢失

*ERROR 108: expected string,如#error “string” 预处理器指令期望一个串变量。

*ERROR 109:

由#error 伪指令引入的错误信息以错误信号形式显示。 *ERROR 110:missing directive 预处理行#后缺少伪指令。

*ERROR 111:unknown directive 预处理行#后不是伪指令。 *ERROR 112:misplaced ?elif?

*ERROR 113:misplaced ?else? *ERROR 114:misplaced ?endif?

指令elif/else/endif只有在if、ifdef、ifndef指令内才是合法的。 *ERROR 117:bad integer expression if/elif指令的数值表达式有语法错误。

*ERROR 118:missing?(?after macro identifier 宏调用中实参表的左括号丢失

*ERROR 119:reuse of macro formal parameter 宏定义形参名重复使用

*ERROR 120:?C?unexpected in formal list 形参表中不允许有字符?c?,应用逗号代替 *ERROR 121:missing ?)?after actual parameter 宏调用实参表的右括号丢失

*ERROR 122:illegal macro invocation 宏调用的实参表与宏定义中的形参表不同 *ERROR 123:missing macro name after ?define? #define 伪指令后缺预定义的宏

*ERROR 124:expected macro formal parameter 宏定义要求形参名

*ERROR 125:declarater too complex

说明过于复杂

*ERROR 126:type-stack underflow

对象的声明至多只能包含20 个类型修饰符(【】,*,(),)错误126 经常在错误125 之前,

两者一起发生。

*ERROR 127:invalid storage class

对象用无效的存储类所说明。当在函数外用auto/register 存储时会发生这种情况。 *ERROR 128:memory space: illegal memory space ?memory space ?used

函数参数的存储类由存储模式(SMALL LARGE COMPACT)决定用户不能改变,使用不同

于存储模式的自动变量应该为静态的存储类

*ERROR 129:missing? ;?before ?token?

该错误表示分号丢失,通常该错误会引发一连串的错误,引发的这些错误无关紧要。因为缺 少分号后编译器不能做正确的语法分析 *ERROR 130:value out of range

using 或interrupt 指令后参数越限。using 用的寄存器组号位0-3,interrupt 需要0-15 的中 断号

*ERROR 131:duplicate function-parameter 函数中形参名重复,形参名应彼此不同 *ERROR 132:not in formal parameter list 函数内参数声明使用的名字未出现在参数表中 *ERROR 133:char function(v0,v1,v2)

Char*v0,*v1,*v5;/ *?v5?在形参中未出现

*ERROR 134:xdata/idata/pdata/data on function not permitted

函数总是驻留于0x5xxxx 的code存储区,不能位于xdata/idata/pdata/data 空间 *ERROR 135:bad storage class for bit

位变量的定义可以接受static或extern的存储类,用REGIESTER和ALIEN 都是非法的 *ERROR 136:?void?on variable

?void?类型只允许作为函数的返回类型或与指针类型合用(void*) *ERROR 137:illegal parameter type:?function?

函数参数的类型不能是函数,然而函数指针可以作为参数 *ERROR 138:interrupt ()may not receive or return value (s) 中断函数既不能有参数又不能有返回值

*ERROR 139:illegal use of ?alien?

关键字alien 将函数定义为PL/M51 规定的过程与函数结构。这意味着C函数中有参数的缩

记符号(即funct(…);)时是不能用alien的

*ERROR 140:bit in illegal memory-space

位变量的定义可包含修饰符DATA,如果无修饰符则假定为DATA。因为位变量始终位于 0x4xxx 的内部数据存储器中,当试图采用其他存储空间就会产生这个错误。 *ERROR 141:NEAR:expected 编译器所见的单词是错误的。期望正确的单词

*ERROR 142:invalid base address

Sfr说明中的基址有错。有效基址为0x80-0xff。如果声明采用base^pos形式,则基址是8的

整数倍

*ERROR 143:invalid absolute bit position

Sbit说明中位地址必须在0x80-0xff之间 *ERROR 144:base^pos:invalid bit position Sbit说明中位pos必须在0~7之间 *ERROR 145:undeclared sfr Sfr未说明

*ERROR 146:invalid sfr

绝对位地址说明(base^pos)包含无效的基地址。这个基地址必须与sfr名相对应 *ERROR 147:object too large 对象不能超过65536(64k)字节

*ERROR 148:field not permitted in union

联合不能包含位成员,这个限制是由8051结构决定的。 *ERROR 149:function member in struct/union

结构或者联合不能包含函数类型的成员。但是指向函数的指针是允许的 *ERROR 150:bit member in struct/union

结构或者联合不能包含位类型的成员,这个限制是由8051 结构决定的 *ERROR 151:self relativestruct/union

结构或者联合不能包含自身

*ERROR 152:bit field type too small for number of bits 位域声明中指定的位数超过所给原型中位的数量

*ERROR 153:named bit-field

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

KeilμVision4是Keil软件公司为8051系列微控制器及其兼容产品设计的集成式软件开发环境。μVision4集成了C51编译器和A51汇编器,其界面类似于Microsoft VS,支持C语言和汇编语言程序的编写...

关键字: 程序 编译 链接

第五届中国国际进口博览会,丹纳赫集团携手中国健康传媒集团,在创新技术在疫苗、细胞治疗药物、中药研发以及质量控制中的应用等领域签署战略合作。同时,双方将共同编译并出版《生物制药工艺》等书籍,以支持相关领域国际前沿技术工具在...

关键字: 编译 质量控制

(全球TMT2022年9月27日讯)新思科技近日宣布推出业内首款基于其ZeBu® EP1硬件仿真系统的硬件仿真与原型验证统一硬件系统,致力为SoC验证和前期软件开发提供更高水平的性能和灵活性。新思科技ZeBu...

关键字: 硬件仿真 新思科技 硬件系统 编译

3个SystemVerilog新特性!01`begin_keyword`end_keyword硬件描述语言中有很多特殊的编译或者综合等工具的预执行指令,在某些场景下我们可以利用一下HDL之外的语法去指导工具,而不是信马由...

关键字: SYSTEMVERILOG DEFINE PACKAGE 编译

你知道,为什么在C中使用了pow函数不需要链接libm库吗?什么情况需要指定链接库?在解释之前,先回顾一下。//来源:公众号【编程珠玑】//https://www.yanbinghu.com#include#includ...

关键字: 编译 POW IBM TEST

    关注、星标公众号,直达精彩内容作者:hguisu一、地址概念和程序如何运行在多道程序环境下,要使程序运行,必须先为之创建进程。而创建进程的第一件事,便是将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中...

关键字: 编译

作 者:道哥,10年嵌入式开发老兵,专注于:C/C、嵌入式、Linux。关注下方公众号,回复【书籍】,获取Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章(PDF格式)。目录学习的困惑实践环境编译进内核编...

关键字: 内核 编译 驱动程序

不知道各位小伙伴是否碰到过这样的情况:一个.c文件include另一个.h头文件,使用Makefile来构建(编译)应用程序。第一次编译、执行,很正常!但是此时,如果修改了.h头文件,再次编译时,就出现问题了:预期的执行...

关键字: 编译

一、前言老周这里编译Kafka的版本是2.7,为啥采用这个版本来搭建源码的阅读环境呢?因为该版本相对来说比较新。而我为啥不用2.7后的版本呢?比如2.8,这是因为去掉了ZooKeeper,还不太稳定,生产环境也不太建议使...

关键字: 源码 编译

道哥的第030篇原创一、一个真实的代码泄漏故事二、Jenkins的基本使用三、gitsubmodule基本使用四、在Jenkins中使用gitmodule来编译所有的模块五、总结六、资源下载一、一个真实的小故事事情发生在...

关键字: 自动化 编译 代码
关闭
关闭