C语言编译、连接的各种错误
安装、使用vc遇到的问题及解决
感言:真是久病成良医啊!1. C语言中出现 "Compiling... Error spawning cl.exe是什么意思?怎么解决?很多人在安装VC 6.0后有过点击“Compile或者“Build后被出现的"Compiling... ,Error spawning cl.exe错误提示给郁闷过。
很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,"CL.exe是VC使用真正的编译器(编译程序),其路径在“ VC根目录Bin ”下面,你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:打开vc界面点击VC “TOOLS (工具)”一> “Optio n选择)”—> “ Directories(目录)"重新设置“ Excutable Fils Include Files、Library Files、Source Files的路径。
很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK 了。
如果你是按照初始路径安装VC6.0的,路径应为:executatble files:C:\Program Files'Microsoft Visual Studio'Commo n\MSDev98\Bi nC:\Program Files'Microsoft Visual Studio\VC98\BINC:\Program Files'Microsoft Visual Studio'Commo n'TOOLSC:\Program Files'Microsoft Visual Studio\Commo n\TOOLS\WINNTin clude files:C:\Program Files'Microsoft Visual Studio\VC98\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\ATL\INCLUDElibrary files:C:\Program Files'Microsoft Visual Studio\VC98\LIBC:\Program Files'Microsoft Visual Studio\VC98\MFC\LIBsource files:C:\Program Files'Microsoft Visual Studio\VC98\MFC\SRCC:\Program Files'Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\ATL\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\CRT\SRC如果你装在其他盘里,则仿照其路径变通就行。
C语言易错点考点(完整版)
总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if和switch)2)用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”;源程序经编译后生成后缀名为“.obj”的目标文件;再把目标文件与各种库函数连接起来,生成“.exe”的可执行文件。
3)main函数,又称主函数,每个C程序有且只有一个main函数;无论main函数在整个程序中的位置如何,程序总是从main函数开始执行、也从main函数结束。
读程序时应从main 函数开始,然后从上往下读(碰到循环做循环,碰到选择做选择)。
4)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.5)bit是位是指为0或者1。
byte是指字节,一个字节=八个位.6)一定要记住二进制如何划成十进制。
概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。
C语言编译的程序称为源程序,它以ASCⅡ数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数定义中不可以再定义函数、即不允许函数嵌套定义。
4、算法可以没有输入,必须要有输出。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
7、任意合法的表达式一定有一个数值与它对应。
第一章1)C程序中对字母的大小写是敏感的,如A与a是不同的标识符。
注释:是对程序的说明,目的是提高程序的可读性,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,不允许嵌套注释。
3)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf都不是关键字。
迷惑你的地方If 是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
PIC MPLAB采用C语言编译错误信息
withtotal) for psect text in segment CODE
Error[000] : Can't find 0xC words (0xC
withtotal) for psect text4 in segment CODE
67. rror[000] D:\Work\standard_\remo.c 113 : 程序中大括号不完整,检查{}是否完整成对使
误,检查程序是否超页:
66. Error[000] : Can't find 0x26 words (0x26 常见的情况是编译的内容超出芯片 ROM 空间,
withtotal) for psect text13 in segment CODE 可屏蔽部分代码,以检查代码量是否过多。
Error[000] : Can't find 0xC words (0xC
probable missing '}' in previous block
用
Error[000] D:\Work\standard_\remo.c 8 :
{ expected
68. Error[000] D:\Work\standard\remo.c 8 : ; 程序代码后缺少“;”号。
expected
13. Illegal conditional compile
IF/ELSE/ENDIF 结构书写有错。
14. Illegal character…in label… 15. Illegal digit 16. Illegal opcode
在标号字符中出现非法字符。合法的字符是 “-”、“·”、“A”~“Z”、“a”~“z”、“0”~“9”。 非法数字。如在十进制数中出现十六进制符 等。 非法操作数。
c语言错误代码
常数中有换行符字符串常数不能继续到第二行,除非进行下列操作:•用反斜杠结束第一行。
・用一个双引号结束第一行上的字符串,并在下一行用另一个双引号开始该字符串。
编译器错误C2002错误消息无效的宽字符常数多字节字符常数是非法的。
通过检查下面的可能原因进行修复1.宽字符常数包含的字节比需要的多。
2.未包括标准头文件STDDEF.h。
3.宽字符不能与一般字符串连接。
4.宽字符常数之前必须是字符“L”:编译器错误C2003错误消息应输入'(6行口6~ id”标识符必须跟在预处理器关键字之后。
编译器错误C2004错误消息应为“defined(id)”标识符必须出现在预处理器关键字之后的括号中。
也可能由于为Visual Studio .NET 2003进行的编译器一致性工作生成此错误:在预处理器指令中缺少括号。
如果预处理器指令缺少右括号,则编译器将生成一个错误。
编译器错误C2005错误消息#line应跟一个行号,却找到“token”#line指令后面必须跟行号。
编译器错误C2006错误消息“directive〃应输入文件名,却找到“token”诸如#include或#import等指令需要文件名。
若要解决该错误,请确保token是一个有效文件名。
并且将该文件名放在双引号或尖括号中。
编译器错误C2007错误消息#define 语法#define后未出现标识符。
若要解决该错误,请使用标识符。
编译器错误C2008 错误消息“character”:宏定义中的意外该字符紧跟在宏名之后。
若要解决该错误,宏名之后必须有一个空格。
编译器错误C2009 错误消息宏形式“identifier〃重复使用宏定义的形参表多次使用该标识符。
宏的参数列表中的标识符必须是唯一的。
“character”:宏形参表中的意外该字符在宏定义的形参表中使用不正确。
移除该字符以解决该错误。
编译器错误C2011 错误消息“identifier”:“type” 类型重定义该标识符已定义为type类型。
c语言常见问题集
c语言常见问题集C语言作为一种古老而强大的编程语言,在使用过程中可能会遇到各种常见问题。
以下是一些C语言常见问题及解决方法的集合:1.指针问题:问题:指针使用不当导致内存泄漏或段错误。
解决方法:谨慎使用指针,确保正确的内存分配和释放,避免野指针。
2.内存泄漏:问题:未正确释放动态分配的内存。
解决方法:在不再使用内存时,使用free函数释放动态分配的内存。
3.数组越界:问题:访问数组元素时超出了数组边界。
解决方法:确保数组索引在合法范围内,使用循环时注意控制循环边界。
4.未初始化变量:问题:使用未初始化的变量。
解决方法:在使用变量之前确保对其进行初始化,避免产生未定义行为。
5.逻辑错误:问题:程序的输出与预期不符。
解决方法:仔细检查代码逻辑,使用调试工具进行单步调试,查找错误的源头。
6.编译错误:问题:编译时出现错误。
解决方法:仔细阅读编译器报错信息,检查代码语法错误,确保使用正确的语法和标准库函数。
7.字符串处理问题:问题:字符串操作时未考虑字符串结束符\0。
解决方法:确保字符串以\0结尾,使用字符串处理函数时注意边界条件。
8.文件操作问题:问题:未正确打开、关闭文件,或者在未打开文件的情况下进行文件操作。
解决方法:在使用文件之前确保正确打开,使用完毕后关闭文件,检查文件是否成功打开。
9.结构体使用问题:问题:结构体成员的访问不当。
解决方法:确保使用正确的结构体成员名,避免结构体成员越界访问。
10.数据类型不匹配:-问题:不同数据类型之间的不匹配导致错误。
-解决方法:确保进行运算或赋值时,数据类型一致或符合隐式转换规则。
以上问题及解决方法提供了一些基本的指导,但在实际编码中,关键在于谨慎、仔细和严谨,同时善用调试工具和编程工具,及时修复潜在问题。
实验1 C语言的运行环境和运行过程#完成
实验一C语言的运行环境和运行过程班级电信132 学号201315100221 姓名林青辉一、实验目的1、掌握c程序设计编程环境visual c++,掌握运行一个c程序设计的基本步骤,包括编辑、编译、连接和运行。
2、掌握c语言程序设计的基本框架,能够编写简单的c程序。
3、了解程序调试的思想,能找出并改正c程序中的语法错误。
二、实验内容1、在“我的电脑”上新建一个文件夹,用于存放c程序,文件夹名字可以是学号姓名。
2、调试示例,在屏幕上显示一个短句“Hello World!”。
源程序#include <stdio.h>void main(){printf(“Hello World!\n”);}运行结果:Hello World!基本步骤:(要求熟练掌握)(1)启动VC++“开始”->“程序”->“Microsoft Visual Studio 6.0”->“Microsoft Visual C++6.0”进入VC++编程环境。
(2)新建文件(*.cpp)“文件”->“新建”,单击“文件”选项卡,选择“C++Source Files”,修改文件保存“目录”和“文件”(文件名),单击“确定”。
(3)编辑和保存(注意:源程序一定要在英文状态下输入,即字符标点都要在半角状态下,同时注意大小写,一般都用小写)在编辑窗口输入源程序,然后执行“文件”->“保存”或“文件”->“另存为”(4)编译(*.obj)用来检查语法错误“编译”->“编译”或Ctrl+F7,在产生的工作区队话框中,选择“是”。
(5)连接(*.exe)“编译”->“构件”或F7(6)运行“编译”->“执行”或Ctrl+F5(7)关闭程序工作区“文件”->“关闭工作区”(8)打开文件“文件”->“打开”(9)查看C源文件、目标文件和可执行文件的存放位置。
源文件在保存目录下,目标文件和可执行文件在“保存目录\Debug”中3、编程,在屏幕上显示一个短句“this is my first c program.”。
浅议C语言中浮点数格式的连接错误及解决方法
【 关键词 】 u o c 浮点数 格式 : r T b
Байду номын сангаас引言
s n  ̄数 cf , a0
s r t su t uc t
8a f cn 函数 是 e语 言 中最 重 要 的格 式 输 入 函 数 。 可 以 从 键 它 盘上为所 有类型的变量或数组提供数据 非 常灵 活方便 .但是 Baf m数 的使用在 e 言编程中也最容易出错。 于一些 常规 En0 语 对 的错误 。 只要按照 saf的格 式规则 细心检查 , 者借 助于分布 enO 或 追 踪 . 步 观察 变 量 值 。 般 都 能 发 现错 误 的 原 因 。但 笔 者 在 使 同 一 用 Baf 函 数 输 入 浮点 类 型 数 据 时 。 现 了 一 些 其 它 问题 , 下 cnn 发 以
洲 5 编写程序 . , 向一 个 共 _ 体 类 型 数 组 中输 入 数 据 。 F } {
Uno aa in d t
pnf%ra[ ; r t” ’ri l ( .rD
IiI o n n ; l t fa £ o
这两个程序都非常简单 , 阅读 程 序 找 不 到 任何 错 误 , 是 在 但 T ro . ub 2 e 0下编译、 连接时却可能产生如下错误信息 : Ln e r ru df e y o FWR Q’nm d l XXe ikr r : n e ndsmbl‘I Q i o u X , eo i e Ln e r ru df e y b l‘ ikr r : n e ndsm o 兀wa o’nm d l xxc eo i o i ou x. e
fr=; 3+】 o(Oi : + i <i
C51-keil编译常见错误和警告处理
keil错误C51编译器识别错类型有三种1、致命错误:伪指令控制行有错,访问不存在的原文件或头文件等。
2、语法及语义错误:语法和语义错误都发生在原文件中。
有这类错误时,给出提示但不产生目标文件,错误超过一定数量才终止编译。
3、警告:警告出现并不影响目标文件的产生,但执行时有可能发生问题。
程序员应斟酌处理。
D.1 致命错误C_51 FATAL_ERRORACTION: <当前行为>LINE: <错误所在行>ERROR: <错误信息> terminated或C_51 FA TAL ERRORACTION: <当前行为>FILE: <错误所在文件>ERROR: <错误信息> terminatedC_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 字节空间。
C语言调试方法范文
C语言调试方法范文C语言是一种非常流行的编程语言,但是在编写程序时,不可避免地会遇到各种错误和问题。
为了解决这些问题,开发人员需要使用调试工具和方法进行调试。
一、调试工具1.编译器:大多数编译器都提供了调试功能,可以在编译时生成调试信息和符号表,帮助开发人员定位问题。
2. 调试器:调试器是一种能够暂停程序运行并允许程序员检查程序状态的工具。
常用的调试器包括GDB、Visual Studio等。
3.打印输出:在程序中插入打印语句,将关键变量的值输出到控制台,以便程序员查看程序的执行过程和变量的值。
二、调试方法1.分析错误信息:当程序出现错误时,编译器和调试器通常会提供详细的错误信息,开发人员可以根据这些信息找出错误所在的位置,并分析错误产生的原因。
2.逐行调试:通过调试器逐行执行程序,观察每一步的执行结果,排除可能的问题。
3.断点调试:在关键位置设置断点,程序运行到该位置时会暂停,开发人员可以查看当前的变量值和程序状态,分析问题所在。
4.查看变量值:调试器可以提供查看变量值的功能,开发人员可以通过观察变量的值变化,找出程序中的错误。
5.测试边界条件:在编写程序时,特别是涉及循环和条件语句时,要注意测试边界条件,以确保程序在各种情况下都能正确运行。
6.剖析代码:通过在代码中插入打印语句,观察程序的执行流程,找出程序中的逻辑错误。
7.使用IDE工具:集成开发环境(IDE)通常会提供一些辅助调试功能,如变量查看、跟踪执行流程等,方便开发人员调试程序。
三、常见调试技巧1.打印调试信息:在程序中插入打印语句,输出关键变量的值和程序的执行流程,以便分析程序的执行过程。
2.编写测试用例:编写一些简单的测试用例,包括边界情况,验证程序的基本功能是否正常。
3.二分法调试:如果程序中存在大量代码和复杂逻辑,可以通过二分法调试,将程序分成多个模块,逐个调试,可以更快地找出问题所在。
4.查找常见错误:有些错误比较常见,如内存越界、指针错误等,开发人员可以通过检查这些常见错误来快速定位问题所在。
C语言编译中的常见错误
C语⾔编译中的常见错误C语⾔编译中的常见错误1、警告类错误‘XXX’declare but never used变量XXX已定义但从未⽤过。
‘XXX’is assigned a value which is never used变量XXX已赋值但从未⽤过。
Code has no effect 程序中含有没有实际作⽤的代码。
Non-portable pointer conversion不适当的指针转换,可能是在应该使⽤指针的地⽅⽤了⼀个⾮0的数值。
Possible us e of ‘XXX’before definition表达式中使⽤了未赋值的变量Possibly incorrect assignment这样的赋值可能不正确Redeclaration of ‘main’⼀个程序⽂件中主函数main不⽌⼀个。
Suspicious pointer conversion可疑的指针转换。
通常是使⽤了基本类型不匹配的指针。
Unreachable code程序含有不能执⾏到的代码。
2、错误或致命错误Compound statement missing } in function main程序结尾缺少括号}。
“}”expected;“(”expected等复合语句或数组初始化的结尾缺少“)”;“(”。
Case outside of switch case不属于Switch结构,多由于switch结构中的花括号不配对所致。
Case statement missing ‘:’switch结构中的某个case之后缺少冒号。
Constant expression required定义数组时指定的数组长度不是常量表达式。
Declaration syntax error 结构体或联合类型的定义后缺少分号。
Declaration was expected 缺少说明,通常是因为缺少分界符如逗号、分号、右圆括号等所引起的。
Default outside switch Default部分放到了switch结构之外,⼀般是因为花括号不匹配⽽引起的。
如何解决C语言中的编译错误与警告
如何解决C语言中的编译错误与警告C语言是一种广泛应用于系统编程和嵌入式开发的编程语言,它的编译过程中常常会出现各种错误和警告。
这些错误和警告可能会导致程序无法正确编译或者在运行时出现问题。
因此,解决C语言中的编译错误与警告是每个程序员都需要掌握的重要技能。
本文将介绍一些常见的编译错误和警告,并提供一些解决方法。
一、理解编译错误和警告的含义在解决编译错误和警告之前,我们首先需要理解它们的含义。
编译错误是指在编译过程中发现的语法错误或者逻辑错误,这些错误会导致程序无法正确编译。
编译警告是指在编译过程中发现的一些潜在的问题,虽然不会导致程序无法编译,但可能会导致程序在运行时出现问题。
二、常见的编译错误和警告1. 语法错误:语法错误是最常见的编译错误之一,它通常是由于编程人员在编写代码时遗漏了分号、括号不匹配等导致的。
解决语法错误的方法是仔细检查代码,确保语法正确。
2. 未声明的标识符:当使用一个未声明的标识符时,编译器会报错。
解决这个问题的方法是在使用标识符之前先进行声明或者引入相应的头文件。
3. 类型不匹配:类型不匹配是指在赋值或者函数调用过程中,变量的类型与期望的类型不一致。
解决这个问题的方法是检查变量的类型,并进行相应的类型转换。
4. 未使用的变量:编译器会对未使用的变量发出警告,这可能是由于代码中存在一些无用的变量。
解决这个问题的方法是删除未使用的变量或者对其进行使用。
5. 未初始化的变量:未初始化的变量可能导致程序在运行时出现未定义的行为。
解决这个问题的方法是在使用变量之前先进行初始化。
6. 函数返回值不匹配:函数的返回值类型与函数定义时声明的返回值类型不一致会导致编译错误。
解决这个问题的方法是检查函数的返回值类型,并进行相应的修改。
7. 潜在的内存泄漏:编译器可能会对未释放的内存发出警告,这可能会导致内存泄漏。
解决这个问题的方法是在使用完内存后及时释放。
三、解决编译错误和警告的方法1. 仔细阅读编译错误和警告信息:编译器通常会提供详细的错误和警告信息,我们应该仔细阅读这些信息,找出问题所在。
C语言编译、运行时常见错误
Turbo C编译、连接和运行时的常见错误&C语言编程风格一、编译时的常见错误1. 数据类型错误。
此类错误是初学者编程时的常见现象, 下面是一些要引起注意的错误:(1) 所有变量和常量必须要加以说明。
(2) 变量只能赋给相同类型的数据。
(3) 对scanf()语句, 用户可能输入错误类型的数据项, 这将导致运行时出错, 并报出错信息。
为避免这样的错误出现, 你就提示用户输入正确类型的数据。
(4) 在执行算术运算时要注意:a. 根据语法规则书写双精度数字。
要写0.5, 而不是写.5; 要写1.0,而不是1。
尽管C语言会自动地把整型转换成双精度型, 但书写双精度型是个好习惯。
让C语言为你做强行转换这是一种效率不高的程序设计风格。
这有可能导致转换产生错误。
b. 不要用0除。
这是一个灾难性的错误, 它会导致程序失败, 不管C语言的什么版本, 都是如此, 执行除法运算要特别小心。
c. 确保所有的双精度数(包括那些程序输入用的双精度数) 是在实数范围之内。
d. 所有整数必须在整数允许的范围内。
这适用于所有计算结果, 包括中间结果。
2. 将函数后面的";"忘掉。
此时错误提示色棒将停在该语句下的一行, 并显示:Statement missing ; in function <函数名>3. 给宏指令如#include, #define等语句尾加了";"号。
4. "{"和"}"、"("和")"、"/*"和"*/"不匹配。
引时色棒将位于错误所在的行, 并提示出有关丢掉括号的信息。
5. 没有用#include指令说明头文件, 错误信息提示有关该函数所使用的参数未定义。
6. 使用了Turbo C保留关键字作为标识符, 此时将提示定义了太多数据类型。
c语言遇到的问题、解决方法及结果
C语言遇到的问题、解决方法及结果1.引言C语言作为一种广泛应用的高级编程语言,常常用于开发系统软件、嵌入式软件以及数据结构等领域。
在使用C语言进行开发过程中,我们会遇到各种问题,本文将讨论常见的问题,并提供相应的解决方法及结果。
2.内存管理问题2.1内存泄漏问题描述:C语言中没有自动内存管理机制,因此在使用动态分配内存时,如果没有释放已使用的内存,就会导致内存泄漏。
解决方法:及时释放已使用的内存是避免内存泄漏的关键。
在每次动态分配内存后,务必记得使用`f re e()`函数释放内存。
结果:通过及时释放内存,可以有效避免内存泄漏问题,提高程序的内存利用效率。
2.2指针问题问题描述:由于C语言中指针的概念较为复杂,容易出现指针使用错误、野指针等问题。
解决方法:在使用指针时,需要保证指针的合法性,避免野指针问题。
同时,可以使用调试工具检查指针的值,以便及时发现和修复指针相关的问题。
结果:通过正确使用指针,可以避免指针相关的错误,提高程序的稳定性。
3.编译问题3.1编译错误问题描述:在使用C语言进行开发时,常常会遇到编译错误,如语法错误、缺少头文件等。
解决方法:仔细检查编译错误的提示信息,根据提示信息进行错误排查。
合理使用编译器提供的调试工具,例如使用`-W al l`选项开启所有警告信息,帮助发现潜在的问题。
结果:通过仔细排查编译错误并进行修复,可以确保程序的正确编译,提高开发效率。
3.2编译器兼容性问题描述:不同的编译器可能对C语言标准的支持程度不同,导致同一份代码在不同编译器下的行为不一致。
解决方法:在开发时,要考虑到目标平台使用的编译器,并根据编译器的要求进行相应的调整和优化。
可以使用条件编译等技术,在不同的编译器下使用不同的代码逻辑。
结果:通过确保程序在目标平台下编译通过,可以提高程序的可移植性和兼容性。
4.性能优化问题4.1程序运行缓慢问题描述:C语言程序在运行过程中可能会因为算法设计不合理、性能瓶颈等原因导致运行缓慢。
C51编译连接错误翻译
C51编译器识别错类型有三种1、致命错误:伪指令控制行有错,访问不存在的原文件或头文件等。
2、语法及语义错误:语法和语义错误都发生在原文件中。
有这类错误时,给出提示但不产生目标文件,错误超过一定数量才终止编译。
3、警告:警告出现并不影响目标文件的产生,但执行时有可能发生问题。
程序员应斟酌处理。
D.1致命错误C_51 FATAL_ERRORACTION: <当前行为>LINE: <错误所在行>ERROR: <错误信息> terminated或C_51 FATAL ERRORACTION: <当前行为>FILE: <错误所在文件>ERROR: <错误信息> terminatedC_51 TERMINA TED C_51(1)ACTION的有关信息*PARSING INVOKE-/#PRAGMA_LINE在对#pragma指明的控制行作此法分析时出错。
*ALLOCATING MEMORY系统分配存储空间时出错。
编译较大程序需要512k空间。
*OPENING INPUT_FILE打开文件时,未找到或打不开源文件/头文件。
*CREA TE LIST_FILE/OBJECT_FILE/WORK_FILE不能创建上述文件。
可能磁盘满或文件已存在而且写保护。
*PARSING SOURCE_FILE/ANALYZING DECLARATIONS分析源程序时发现外部引用名太多。
*GENERA TING INTERMEDIATE CODE源代码被翻译成内部伪代码,错误可能来源于函数太大而超过内部极限。
*WRITING TO FILE在向文件(work,list,prelist或object file)写时发生错误。
(2)ERROR的有关信息*MEMORY SPACE EXHAUSTED所有可用系统空间耗尽。
至少需要512k字节空间。
没有足够空间,用户必须检查常驻内存的驱动程序是否太多。
C语言keil编译器提示错误的解决方法
C编译器错误与解决方法1. Warning 280:’i’:unreferenced local variable说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣告2 Warning 206:’Music3’:missing function-prototype说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣告3 Compling :C:\8051\MANN.CError:318:can’t open file ‘beep.h’说明在编译C:\8051\MANN.C 程序过程中由于main.c 用了指令#i nclude “beep.h”,但却找不到所致解决方法编写一个beep.h 的包含档并存入到c:\8051 的工作目录中4 Compling:C:\8051\LED.CError 237:’LedOn’:function already has a body说明LedOn( )函数名称重复定义即有两个以上一样的函数名称解决方法修正其中的一个函数名称使得函数名称都是独立的5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms( )函数或利用条件编译#if …..#endif,可保留该函数并不编译6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAPFROM : 0025HTO: 0025H说明外部资料ROM 的0025H 重复定义地址解决方法外部资料ROM 的定义如下Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它7 WARNING 206:’DelayX1ms’: missing function-prototypeC:\8051\INPUT.CError 267 :’DelayX1ms ‘:requires ANSI-style prototype C:\8051\INPUT.C说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决方法编写DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调用8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOLSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNALSYMBOL:MUSIC3MODULE:C:\8051\MUSIC.OBJ(MUSIC)ADDRESS:0018H说明程序中有调用MUSIC 函数但未将该函数的含扩档C 加入到工程档Prj 作编译和连接 解决方法设MUSIC3 函数在MUSIC C 里将MUSIC C 添加到工程文件中去9 ***ERROR 107:ADDESS SPACE OVERFLOWSPACE: DATASEGMENT: _DATA_GOUP_LENGTH: 0018H***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNALSYMBOL: VOLUMEMODULE: C:\8051\OSDM.OBJ (OSDM)ADDRESS: 4036H说明data 存储空间的地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存储模式设为SMALL 则局部变量先使用工作寄存器R2~R7 作暂存当存储器不够用时则会以data 型别的空间作暂存的个数超过0x7f 时就会出现地址不够的现象解决方法将以data 型别定义的公共变量修改为idata 型别的定义说明如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的解决办法加以归纳以期共享10.***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?_WRITE_GMVLX1_REG?D_GMVLX1CALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?_SPI_SEND_WORD?D_SPICALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPICALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。
C语言调试技巧
序调试过 程至关重要 的一步 ,但 是却经 常容易 被人忽视 ,总 希望把 一切都推 给计 算机 去做 ,但这样 会 占用 机器 时间 ,作
为一个程序人员应 当养成严谨 的作 风 ,每一步都要严格把 关 , 不把问题留给后续进行 。 为 了提 高人工检 查的效率 ,所编 写的程序 应该 按照下述 要求进行 :
果运行 时系统提示错 误 ,大部分 都和数 据的输入 、输 出格 式
相关 。如果发现输 入 、输 出的数 据格式 有问题 ,要为相 关的 输入 、输 出的数据 格式进行 检查排错 ,很容易 发现错误 。如 果程序 的输入 、输 出 函数 比轳多 ,可 以在程序 中间插 入一些 调试语句 ,然后采取分段隔离 的方法 ,逐段调试 ,检查错误 , 这样便可 以很快确定 出错 的位置 。
1 静 态检 查
静 态 检查 ,也 就 是 人 工 检 查 ,是 指 不 通 过 上 机 运 行 程 序 ,
而是根据程序流程 图的过程对程序进行检查排错。 因为有些错 误在程 序运行 时很难被查 出 ,可 是在静 态检 查 中却极 容易被发 现 ,比如 常犯的书 写错 误 。静态检查 是程
程序 员在编 写程 序 的过程 中 ,难免会 有疏漏 ,这个 时候 就要进行 程序调试 ,来 检查 所存在 的错误和漏洞 。程序调试 , 是指将写好 的程序在 投入实 际操作 之前 ,利用人 工检查 或者 编译运行 的方法进行 调试 ,以期 改正逻辑 错误 和语法错 误 的
源程序进 行语法检查 。如果发现 源程序有语 法错 误 ,系统 将
显示错误信息 。用户可 以根据这些提示信息查 找出错误性质 ,
并在程序中出错之处进行相应 的修改。
() 编 译 通 过 后 要 进 行 连 接 。连 接 的 过程 也 有 查 错 功 能 , 2
C语言编译错误信息提示
C语言编译错误信息提示1.Array bounds missing数组的界限“]”丢失。
在源文件中定义了一个数组,但此数组没有以右方括号结束。
2.Array size too large数组长度太大。
定义的数组太大,可用内存不够。
3.Bad configuration file配置文件不正确。
TURBOC.CFG配置文件中包含不是合适命令行选择项的非注解文字。
配置文件命令选择项必须以一短横线(-)开始。
4.Bad file name format in include directive使用include指令时,文件名格式不正确。
Include文件名必须用引号(“filename.h”)或尖括号(<filename.h>)括起来,否则将产生此类错误。
如果使用了宏,则产生的扩展正文也不正(因为无引号)。
5.Cannot modify a const object不能修改一个常量对象。
对定义为常量的对象进行不合法操作(如常量赋值)引起此类错误。
6.Case outside of switchCase出现在switch外,编译程序发现Case语句出现在switch句句外面,通常是由于括号不匹配造成的。
7.Case statement missingCase语句漏掉。
Case语句必须包含一以冒号终结的常量表达式。
可能的原因是丢了冒号或在冒号前多了别的符号。
8.Case syntax errorCase语法错误。
Case中包含了一些不正确的符号。
9.Character constant too long字符常量太长。
字符常量只能是一个或两个字符长。
10.Compound statement missing复合语句漏掉了大括号“}”,编译程序扫描到源文件末时,未发现结束大括号,通常是由于大括号不匹配造成的。
11.Could not find ‘xxxxxxxx.xxx’找不到’xxxxxxxx’文件。
C语言编译环境中常见错误提示
C语言编译环境中常见错误提示编译中的常见错误例析(1) 警告类错误‘XXX’declare but never used 变量XXX已定义但从未用过。
‘XXX’is assigned a value which is never used 变量XXX已赋值但从未用过。
Code has no effect 程序中含有没有实际作用的代码。
Non-portable pointer conversion 不适当的指针转换,可能是在应该使用指针的地方用了一个非0的数值。
Possible use of ‘XXX’before definition 表达式中使用了未赋值的变量Redeclaration of ‘main’一个程序文件中主函数main不止一个。
Suspicious pointer conversion 可疑的指针转换。
通常是使用了基本类型不匹配的指针。
Unreachable code 程序含有不能执行到的代码。
(2) 错误或致命错误Compound statement missing } in function main 程序结尾缺少括号}。
“}”expected;“(”expected等复合语句或数组初始化的结尾缺少“)”;“(”。
Case outside of switch case 不属于Switch结构,多由于switch结构中的花括号不配对所致。
Case statement missing ‘:’switch结构中的某个case之后缺少冒号。
Constant expression required 定义数组时指定的数组长度不是常量表达式。
Declaration syntax error 结构体或联合类型的定义后缺少分号。
Declaration was expected 缺少说明,通常是因为缺少分界符如逗号、分号、右圆括号等所引起的。
Default outside switch Default部分放到了switch结构之外,一般是因为花括号不匹配而引起的。
C语言常见错误及解决方法
C语言常见错误及解决方法C语言是一种广泛应用的编程语言,具有高效性和可移植性等特点。
然而,由于C语言对细节的要求较高,很容易出现各种错误。
本文将介绍C语言常见的错误及解决方法。
1.语法错误语法错误是最常见也是最容易发现的错误。
它们通常是由于拼写错误、错误的标点使用或缺少必要的符号而引起的。
解决方法是仔细检查代码,并使用编译器提供的错误信息作为参考。
2.语义错误语义错误是指代码逻辑上的错误,导致程序在运行时产生意外的结果。
这些错误通常是由于错误的条件判断、错误的变量使用或错误的控制流等引起的。
解决方法是通过仔细分析代码,检查可能的逻辑错误。
3.数组越界错误数组越界错误是指访问数组时,超出了数组的界限。
这种错误可能会导致程序崩溃或产生错误的结果。
解决方法是仔细检查数组访问的边界条件,确保索引值在合法范围内。
4.空指针错误空指针错误是指使用未初始化的指针或将指针赋值为空指针,并尝试对其进行操作。
这种错误可能会导致程序崩溃或产生未定义的行为。
解决方法是在使用指针之前,始终初始化指针,并检查指针是否为空。
5.内存泄漏内存泄漏是指程序在分配内存后,未正确释放该内存造成的。
这种错误可能会导致程序占用大量内存,并最终导致系统资源的枯竭。
解决方法是在动态内存分配之后,始终使用free函数释放相关内存。
6.死循环死循环是指程序中出现无法结束的循环结构,导致程序无法继续执行下去。
这种错误通常是由于循环条件错误或循环体中没有跳出循环的语句造成的。
解决方法是仔细检查循环条件,并在循环体中使用终止循环的语句。
7.逻辑错误逻辑错误是指代码的逻辑顺序或条件判断错误,导致程序无法按照预期方式执行。
这种错误通常是由于逻辑表达式的错误或错误的计算顺序引起的。
解决方法是通过仔细分析代码,检查逻辑错误的可能性。
8.类型错误类型错误是指将不兼容的数据类型进行操作或赋值,导致程序产生意外的结果。
这种错误可能会导致数据截断、计算错误或未定义的行为。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应输入“defined id”
标识符必须跟在预处理器关键字之后。
编译器错误 C2004 错误消息
应为“defined(id)”
当 stringize 运算符与包括转义序列的字符串一起使用时会发生 C2017。
编译器错误 C2018 错误消息
未知字符“hexnumber”
源文件包含一个意外的 ASCII 字符,该字符由其十六进制数标识。若要解决该错误,请移除
用 \n 结束第一行是不够的。
编译器错误 C2002 错误消息
无效的宽字符常数
多字节字符常数是非法的。
通过检查下面的可能原因进行修复
。
编译器错误 C2012 错误消息
在“<”之后缺少名称
#include 指令缺少所需的文件名。
编译器错误 C2013 错误消息
缺少“>”
编译器错误 C2041 错误消息
非法的数字“character”(用于基“number”)
指定的字符不是基(如八进制或十六进制)的有效数字。
当使用 Microsoft 扩展将字符常数转换为整数时,也可能发生 C2015。
编译器错误 C2017 错误消息
非法的转义序列
转义序列(如 \t)出现在字符或字符串常数之外。
编译器错误 C2001 错误消息
常数中有换行符
字符串常数不能继续到第二行,除非进行下列操作:
•用反斜杠结束第一行。
•用一个双引号结束第一行上的字符串,并在下一行用另一个双引号开始该字符串。
“identifier1”: 不是“identifier2”的成员
该代码错误调用或引用了结构、类或联合的成员。
编译器错误 C2040 错误消息
“operator”:“identifier1”与“identifier2”的间接寻址级别不同
用作浮点常数的指数的字符是一个无效数字。确保使用的指数在范围之内。
编译器错误 C2022 错误消息
“number”: 对字符来说太大
字符或字符串常数中跟在反斜杠 (\) 后面的八进制数字太大,不能表示字符。
#include 指令缺少右尖括号。添加右尖括号以解决该错误。
编译器错误 C2014 错误消息
预处理器命令必须作为第一个非空白空间启动
预处理器指令的 # 符号必须是非空白行上的第一个字符。
1.宽字符常数包含的字节比需要的多。
2.未包括标准头文件 STDDEF.h。
3.宽字符不能与一般字符串连接。
4.宽字符常数之前必须是字符“L”:
标识符必须出现在预处理器关键字之后的括号中。
也可能由于为 Visual Studio .NET 2003 进行的编译器一致性工作生成此错误:在预处理器指
令中缺少括号。
如果预处理器指令缺少右括号,则编译器将生成一个错误。
编译器错误 C2015 错误消息
常数中的字符太多
一个字符常数包含的字符多于两个。标准字符常数只能包含一个字符,长字符常数只能包含两
个字符。
转义序列(如 \t)将被转换为单个字符。
大约为此长度的一半的 Unicode 字符串也会生成此错误。
编译器错误 C2027 错误消息
使用了未定义类型“type”
类型只有经过定义才能使用。若要解决该错误,请确保在引用类型前已对其进行了完全定义。
编译器错误 C2036 错误消息
“identifier”: 未知的大小
对 identifier 的操作需要数据对象的大小,而该大小无法确定。
编译器错误 C2039 错误消息
涉及该运算符的表达式具有不一致的间接寻址级别。
如果两个操作数都是算术的或都是非算术的(如数组或指针),则不用更改就可使用它们。如
果一个操作数是算术的,而另一个不是,则算术运算符将转换为非算术类型。
诸如 #include 或 #import 等指令需要文件名。若要解决该错误,请确保 token 是一个有效
文件名。并且将该文件名放在双引号或尖括号中。
编译器错误 C2007 错误消息
#define 语法
该字符。
编译器错误 C2019 错误消息
应找到预处理器指令,却找到“character”
该字符跟在 # 符号的后面,但它不是预处理器指令的第一个字母。
编译器错误 C2020 错误消息
该结构或联合中的一个成员函数在 C++ 中允许使用而在 C 中却不允许。若要解决该错误,请
编译为 C++ 程序或移除该成员函数。
编译器错误 C2033 错误消息
“identifier”: 位域不能有间接寻址
“member”:“class”成员重定义
从基类或结构继承的成员被重定义。不能重定义继承成员,除非它在基类中被声明为 vir消息
应输入指数值,而非“character”
有可能声明一个指向已声明但未定义的类型的指针。但是 Visual C++ 不允许引用未定义的类
型。
编译器错误 C2028 错误消息
结构/联合成员必须在结构/联合中
结构或联合成员必须在结构或联合内部声明。
编译器错误 C2030 错误消息
“identifier”: 结构/联合成员重定义
结构或联合将同一标识符用于多个成员。
编译器错误 C2032 错误消息
“identifier”: 函数不能是结构/联合“structorunion”的成员
编译器错误 C2026 错误消息
字符串太大,已截断尾部字符
该字符串的长度超过了 16380 个单字节字符的**。
连接相邻字符串之前,字符串的长度不能超过 16380 个单字节字符。
编译器错误 C2009 错误消息
宏形式“identifier”重复使用
宏定义的形参表多次使用该标识符。宏的参数列表中的标识符必须是唯一的。
编译器错误 C2010 错误消息
“character”: 宏形参表中的意外
该位域被声明为指针,这是不允许的。
编译器错误 C2034 错误消息
“identifier”: 位域类型对于位数太小
该位域声明中位的数目超过了基类型的大小。
该字符在宏定义的形参表中使用不正确。移除该字符以解决该错误。
编译器错误 C2011 错误消息
“identifier”:“type”类型重定义
该标识符已定义为 type 类型。如果多次将某个类型库导入同一个文件,也可能生成 C2011
#define 后未出现标识符。若要解决该错误,请使用标识符。
编译器错误 C2008 错误消息
“character”: 宏定义中的意外
该字符紧跟在宏名之后。若要解决该错误,宏名之后必须有一个空格。
编译器错误 C2005 错误消息
#line 应跟一个行号,却找到“token”
#line 指令后面必须跟行号。
编译器错误 C2006 错误消息
“directive”应输入文件名,却找到“token”