Keil+C编译器常见警告与错误信息的解决方法[归类].pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Keil+C编译器常见警告与错误信息的解决方法 Keil+C编译器是一种流行的嵌入式系统开发工具,它提供了强大的编译和调试功能。然而,在使用Keil+C编译器时,开发者可能会遇到各种警告和错误信息。这些警告和错误信息可能会导致编译失败,影响开发进度。因此,了解和解决这些警告和错误信息是非常重要的。 致命错误 --------- 致命错误是编译器在编译过程中遇到的严重错误,它们会导致编译器立即终止编译。致命错误通常是命令行指定的无效选项的结果,或者编译器不能访问一个特定的源包含文件时产生。 azioni可能的致命错误信息包括: * C51 FATAL-ERROR –ACTION <current action> LINE : <line in which the error is detected> ERROR : <corresponding error message> * C51 FATAL-ERROR –ACTION <current action> FILE : <file in which the error is detected> ERROR : <corresponding error message> Action可能的值包括: * 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文件或工作文件时遇到的错误。 错误信息 --------- 错误信息是编译器在编译过程中遇到的语法错误或语义错误。这些错误信息可能会导致编译失败,影响开发进度。 错误信息可能的值包括: * ‘(‘ AFTER CONTROL EXPECTED:一些控制参数需要用括号包含一个参数,当没有左括号时显示本信息。 * ‘)’ AFTER PARAMETER EXPECTED:本信息表示包含没有参数的右括号。 * BAD DIGIT IN NUMBER:一个控制参数的数字参数包含无效字符,只能是十进制数。 * CAN’T CREATE FILE:在 FILE 行定义的文件名不能建立。 * CAN’T HAVE GENERAL 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 文件中生成两个有时候三个段定义。 * NON-NULL ARGUMENT EXPECTED:所选的控制参数需要用括号包含一个参数,例如一个文件名或一个数字。 * OUT OF RANGE NUMBER:一个控制参数的数字参数超出范围,例如OPTIMIZE控制只允许数字0到6值,7就将产生本错误信息。 * PARSE STACK OVERFLOW:解析堆栈溢出,如果源程序包含很复杂的表达式或如果块的嵌套深度超过31级就会出现这个错误。 * PREPROCESSOR LINE TOO LONG:一个中间扩展长度超过32K 字符。 * PREPROCESSOR MACROS TOO NESTED:在宏扩展期间预处理器所用的堆栈太大,这个信息通常表示一个递归的宏定义,但也可表示一个宏嵌套太多。 * RESPECIFIED OR CONFLICTING CONTROL:一个命令行参数指定了两次或命令行参数冲突。 * SOURCE MUST COME FROM A DISK-FILE:源和包含文件必须存在控制台 CONCI或类似的设备不能作为输入文件。 * UNKNOWN CONTROL:所选的控制参数不认识。 解决方法 --------- 要解决这些警告和错误信息,开发者需要: * 仔细检查命令行参数,确保它们正确无误。 * Review 源文件,确保它们符合语法和语义要求。 * 使用#pragma 声明来指定控制参数。 * 分割大型源文件为小文件,以避免编译器存储区溢出。 * 减少源文件访问的外部变量和函数的数目。 * 使用合法的文件名和文件路径。 * 确保磁盘空间足够,避免写入错误。 遵循这些解决方法,开发者可以避免常见的警告和错误信息,从而提高编译效率和开发速度。
- 粉丝: 3
- 资源: 11万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助