C语言上机程序调试功能键及常见错误提示

合集下载

C语言技术的调试与错误排查指南

C语言技术的调试与错误排查指南

C语言技术的调试与错误排查指南在计算机编程领域中,C语言一直被广泛使用。

然而,即使是经验丰富的程序员也难免会遇到各种错误和bug。

所幸的是,C语言提供了一些调试工具和技术,帮助我们定位和解决问题。

本文将介绍一些常见的C语言调试技术和错误排查指南。

一、使用调试器调试器是一种强大的工具,可以帮助程序员跟踪代码的执行过程并找出问题所在。

GDB(GNU调试器)是一个常用的调试器,它可以在终端中使用。

在编译时,需要使用-g选项来生成调试信息。

然后,通过在终端中运行gdb命令,可以进入调试模式。

调试器提供了一系列命令,如设置断点、单步执行、查看变量值等。

当程序执行到断点时,可以逐行查看代码,并检查变量的值是否符合预期。

如果发现错误,可以使用调试器提供的命令来获取更多的上下文信息,以便更好地理解问题。

二、打印调试信息除了使用调试器外,打印调试信息也是一种常见的调试技术。

在代码中插入一些打印语句,输出变量的值或某些关键点的消息。

这种方法适用于简单的问题和小型程序。

在C语言中,可以使用printf函数来打印调试信息。

通过在代码中插入printf语句,可以输出变量的值或其他有用的信息。

然而,需要注意的是,在调试完成后,要记得将这些打印语句删除或注释掉,以免影响程序的性能。

三、避免内存错误内存错误是C语言程序中常见的问题之一。

常见的内存错误包括访问未分配的内存、访问已释放的内存、内存泄漏等。

这些错误可能导致程序崩溃或产生不可预测的结果。

为了避免内存错误,可以使用一些工具和技术。

例如,Valgrind是一个开源的内存调试工具,可以检测内存泄漏和访问错误。

通过在终端中运行valgrind命令,可以对程序进行内存错误检查。

此外,C语言还提供了一些内存管理函数,如malloc、free和realloc。

在使用这些函数时,需要注意内存的分配和释放,以避免内存错误。

四、处理异常情况在编写C语言程序时,需要考虑异常情况的处理。

例如,当程序遇到无效输入或发生错误时,应该采取适当的措施来处理异常情况,而不是简单地崩溃或产生错误结果。

浅析C语言程序调试过程及编程常见错误

浅析C语言程序调试过程及编程常见错误

浅析C语言程序调试过程及编程常见错误C语言是一种广泛使用的程序设计语言,常用于开发系统软件和应用软件。

在编写C语言程序时,经常会出现一些错误和bug,因此调试是程序开发过程中不可或缺的一步。

本文将从浅析C语言程序调试过程及编程常见错误两个方面进行分析。

一、C语言程序调试过程1.编译程序:在进行调试前,首先需要将源代码编译成可执行文件。

编译过程中会进行词法分析、语法分析、语义分析等操作,同时会检查语法错误并生成目标代码。

2.设置断点:在需要调试的程序代码中,通过设置断点来指定程序的一些位置停止执行。

断点可以设置在任何地方,包括函数调用、循环语句等。

3.运行程序:运行调试器,加载编译得到的可执行文件,并运行程序。

当程序执行到设置的断点位置时,会自动暂停执行。

4. 调试程序:在暂停执行的位置,可以查看变量的值、执行堆栈信息、运行指令等。

通过观察这些信息,可以发现程序中的错误或bug。

5.单步执行:在调试过程中,可以选择单步执行程序。

单步执行可以按照一条指令一条指令地运行程序,并观察程序的执行情况。

这样可以更精确地找到问题所在。

6. 修改程序:当发现错误或bug时,需要对程序进行修改。

修改可以包括更改变量的值、调整算法逻辑等。

修改后需要重新编译并重新运行程序。

7. 重复调试:进行一次修改后,需要再次运行程序并进行调试。

在多次调试中,需要逐步修复所有的错误和bug,直到程序能够正常运行。

1.语法错误:语法错误是最常见的错误之一、例如忘记加分号、括号不匹配、变量未声明等。

这些错误在编译时会被检测到,并给出详细的错误提示。

2.逻辑错误:逻辑错误是程序中最难调试的错误之一、逻辑错误导致程序的行为和期望的不一致,但不会引发编译错误。

调试逻辑错误需要仔细检查算法和代码逻辑,并通过查看变量值等调试信息逐步找出错误所在。

3.数组越界错误:当访问数组时,需要确保不超出数组的范围。

如果越界访问数组,可能导致程序崩溃或产生不可预料的结果。

C语言常见错误与调试方法

C语言常见错误与调试方法

C语言常见错误与调试方法在学习和使用C语言的过程中,出现错误是很常见的。

这些错误可能会导致程序无法正常运行或产生不符合预期的结果。

为了提高代码的质量和效率,我们需要了解常见的C语言错误,并学会相应的调试方法。

1. 语法错误语法错误是最常见的错误类型之一。

它们通常是由于拼写错误、标点符号的错误、缺少分号以及错误的语法结构等问题导致的。

为了避免语法错误,我们应该养成良好的编程习惯,例如检查拼写和标点符号、使用代码缩进和注释来提高代码的可读性。

当遇到语法错误时,我们应该仔细检查所在代码行及其前后的语句,查找可能存在的拼写错误或语法结构错误。

有时,观察编译器给出的错误提示信息也是解决语法错误的关键。

2. 逻辑错误逻辑错误是指程序运行时产生错误结果、逻辑混乱或无法按照预期执行的情况。

这些错误通常是由于程序员的思考不清晰或对问题理解不准确导致的。

要避免逻辑错误,我们需要仔细分析和推理代码的逻辑,确保我们的代码能够完整地涵盖目标问题。

此外,我们还可以使用调试工具来帮助捕捉逻辑错误,例如使用调试器逐步跟踪代码的执行路径、使用断点来观察变量值等。

当遇到逻辑错误时,我们可以尝试使用输出语句在关键位置输出变量的值,以便观察程序的执行情况。

另外,调试工具提供了代码的逐行执行功能,我们可以逐步检查代码并观察变量的值,从而找出逻辑错误的根源。

3. 数组越界错误数组越界错误是指在访问数组元素时超出了数组的范围。

这样的错误可能会导致程序崩溃或者产生不可预测的结果。

为了避免数组越界错误,我们需要确保在访问数组元素之前检查数组的边界。

此外,我们还可以使用循环结构来遍历数组,并通过循环变量来控制访问数组的索引。

当遇到数组越界错误时,我们应该检查涉及的所有循环和条件语句,确定数组索引的范围是否正确。

此外,一些编译器会提供工具来检测数组越界错误,我们可以使用这些工具来优化代码和修复错误。

4. 内存泄漏错误内存泄漏错误是指在程序运行过程中未正确释放不再使用的内存。

C语言程序设计- C语言程序常见错误与调试方法(原)

C语言程序设计- C语言程序常见错误与调试方法(原)
此类错误。 Function definition out ofplace (函数定义位置错误) Function doesn't take a variable number of argument(函数不接受可变的参
数个数) Goto statement missing label (Goto语句缺少标号) If statement missing( (If语句缺少"(") If statement missing) (If语句缺少")") lllegal initalization (非法初始化) lllegal octal digit (非法八进制数) 分析与处理:此类错误通常是由于八进制常数中包含了非八进制数字所致。 lllegal pointer subtraction (非法指针相减) lllegal structure operation (非法结构操作) lllegal use of floating point (浮点运算非法) lllegal use of pointer (指针使用非法)
误。 For statement missing( (For语句缺少"(") For statement missing; (For 语句缺少";")
C Programming
11.1 C语言程序设计中常见错误分析与出错信息
分析与处理:在 for语句中,当某个表达式后缺少分号,那么会出现此类错误。 Function call missing) (函数调用缺少")") 分析与处理:如果函数调用的参数表漏掉了右手括号或括号不匹配,那么会出现
现其它字符,那么会引起此类错误。 Division by zero (除数为零) 分析与处理:当源文件的常量表达式出现除数为零的情况,那么会造成此类错误。 Do statement must have while (do语句中必须有While关键字) 分析与处理:假设源文件中包含了一个无While关键字的 do语句,那么出现本

C语言常见错误分析和程序调试

C语言常见错误分析和程序调试

C语言常见错误分析和程序调试C语言是一种常见的编程语言,在使用的过程中,常常会出现一些错误。

本文将分析C语言常见的错误,以及如何进行程序调试。

1.语法错误:语法错误是最常见的错误类型之一、它通常是由于拼写错误、缺少分号或括号不匹配等简单的错误导致的。

解决方法是仔细检查代码,确保所有括号都是成对且正确使用,并及时修正拼写错误。

2.逻辑错误:逻辑错误是指程序的逻辑错误,即程序没有按照预期的方式执行。

这种错误很难被编译器检测到,需要程序员自己进行调试。

解决方法一是使用printf语句来输出变量的值,以观察程序的执行过程;二是使用调试工具,如GDB,来逐步执行程序并观察变量的值。

3.内存错误:内存错误是指在程序中使用了未分配或已释放的内存。

这种错误通常会导致程序崩溃或产生不可预测的结果。

解决方法是保证正确地使用内存函数,如malloc和free,并养成好的编程习惯,即分配内存时要确保及时释放。

4.数组越界:数组越界是指程序访问了数组范围之外的元素。

这种错误可能会导致程序崩溃或产生不可预测的结果。

解决方法是仔细检查数组的索引,并确保索引的值在合法范围内。

5.变量未初始化:未初始化的变量可能包含随机的垃圾值,从而导致程序的不稳定或不可预测的结果。

解决方法是在使用变量之前,先给变量赋初始值。

6.常量溢出:常量溢出是指常量值超过了其数据类型的范围。

解决方法是使用合适的数据类型,并确保常量值在其范围之内。

7.函数调用错误:函数调用错误可能是函数名拼写错误、函数参数类型不匹配或函数调用位置错误等。

解决方法是仔细检查函数名的拼写,确保函数参数与定义一致,并确保函数调用位置正确。

总之,在编写C语言程序时,应该注意避免语法错误,正确使用内存函数和数组索引,初始化变量,选择合适的数据类型,并仔细检查函数调用。

此外,对于逻辑错误,可以通过打印输出和调试工具来进行程序调试,帮助定位问题并解决错误。

c语言程序调试中错误或警告提示的中文对照概要

c语言程序调试中错误或警告提示的中文对照概要

C语言错误提示Ambiguous operators need parentheses -------不明确的运算需要用括号括起Ambiguous symbol ''xxx'' ---------------- 不明确的符号Argument list syntax error ---------------- 参数表语法错误Array bounds missing ------------------ 扔掉数组界限符Array size toolarge ----------------- 数组尺寸太大 Bad character in paramenters ------ ------------ 参数中有不合适的字符Bad file name format in include directive ------------ 包含命令中文件名格式不正确Bad ifdef directive synatax ------------------ 编译预办理 ifdef 有语法错Bad undef directive syntax ------------------- 编译预办理 undef 有语法错Bit field too large ---------------- 位字段太长Call of non-function ----------------- 调用不决义的函数Call to function with no prototype ----------- 调用函数时没有函数的说明Cannot modify a const object ---------------不一样意修改常量对象Case outside of switch ----------------遗漏了 case语句Case syntax error ------------------ Case 语法错误 Code has no effect ----------------- 代码不能述不能能执行到Compound statement missing{ -------------------- 分程序遗漏 "{"Conflicting type modifiers ------------------ 不明确的种类说明符Constant expression required ----------------要求常量表达式Constant out of range in comparison --------------在比较中常量超出范围Conversion may lose significant digits ---------变换时会扔掉意义的数字Conversion of near pointer not allowed ---------------不一样意变换近指针Could not find file ''xxx'' -----------------------找不到XXX文件Declaration missing ; ---------------- 说明缺少 " ; " Declaration syntax error ----------- ------ 说明中出现语法错误Default outside of switch -------------- Default 出现在 switch 语句之外Define directive needs an identifier ---------定义编译预办理需要表记符Division by zero ------------------ 用零作除数Do statement must have while ----------- Do-while 语句中缺少 while 部分Enum syntax error --------------------- 列举种类语法错误Enumeration constant syntax error -----------------列举常数语法错误Error directive :xxx ------------------------ 错误的编译预办理命令Error writing output file ---------------------写输出文件错误Expression syntax error ----------------------- 表达式语法错误Extra parameter in call ------------------------ 调用时出现节余错误File name too long ---------------- 文件名太长Function call missing ----------------- 函数调用缺少右括号Fuction definition out of place ------------------ 函数定义地址错误Fuction should return a value ------------------函数必需返回一个值Goto statement missing label ------------------ Goto 语句没有标号Hexadecimal or octal constant too large -------16进制或 8 进制常数太大Illegal character ''x'' ------------------ 非法字符 x Illegal initialization ------------------ 非法的初始化Illegal octal digit ------------------ 非法的 8 进制数字Illegal pointer subtraction ------------------ 非法的指针相减Illegal structure operation ------------------ 非法的结构体操作Illegal use of floating point ----------------- 非法的浮点运算Illegal use of pointer -------------------- 指针使用非法Improper use of a typedefsymbol ----------------种类定义符号使用不合适In-line assembly not allowed ----------------- 不一样意使用行间汇编Incompatible storage class -----------------储藏种类不相容Incompatible type conversion -------------------- 不相容的种类变换Incorrect number format ----------------------- 错误的数据格式Incorrect use of default --------------------- Default 使用不当Invalid indirection --------------------- 无效的间接运算Invalid pointer addition ------------------ 指针相加无效Irreducible expression tree --------------------- 无法执行的表达式运算Lvalue required --------------------------- 需要逻辑值 0 或非 0 值Macro argument syntax error ------------------- 宏参数语法错误Macro expansion too long ---------------------- 宏的扩展今后太长Mismatched number of parameters in definition ----定义中参数个数不般配Misplaced break --------------------- 此处不应出现 break 语句Misplaced continue ------------------------ 此处不应出现 continue 语句Misplaced decimal point -------------------- 此处不应出现小数点Misplaced elif directive -------------------- 不应编译预办理 elifMisplaced else ---------------------- 此处不应出现 elseMisplaced else directive ------------------ 此处不应出现编译预办理elseMisplaced endif directive ----------------- 此处不应出现编译预办理endifMust be addressable ----------------------必定是能够编址的Must take address of memory location ---------------必定储藏定位的地址No declaration for function ''xxx'' ---------------- 没有函数 xxx 的说明No stack --------------- 缺少货仓No type information ------------------ 没有种类信息Non-portable pointer assignment -------- 不能搬动的指针(地址常数赋值Non-portable pointer comparison --------不能搬动的指针 (地址常数比较Non-portable pointer conversion --------不能搬动的指针(地址常数变换Not a valid expression format type ----------------- 不合法的表达式格式Not an allowed type --------------------- 不一样意使用的种类Numeric constant too large ------------------- 数值常太大Out of memory ------------------- 内存不够用 Parameter ''xxx'' is never used ----------- ------- 能数 xxx 没适用到Pointer required on left side of -> ------------符号->的左边必定是指针Possible use of ''xxx'' before definition ----------在定义从前就使用了xxx ( 警告Possibly incorrect assignment ----------------赋值可能不正确Redeclaration of ''xxx'' ------------------- 重复定义了 xxxRedefinition of ''xxx'' is not identical -------- xxx 的两次定义不一致Register allocation failure ------------------ 寄存器定址失败Repeat count needs an lvalue ------------------重复计数需要逻辑值Size of structure or array not known -----------结构体或数给大小不确定Statement missing ; ------------------语句后缺少 " ; " Structure or union syntax error -------------- 结构体或联合体语法错误Structure size too large ----------------结构体尺寸太大Sub scripting missing ] ---------------- 下标缺少右方括号Superfluous & with function or array ----------- 函数或数组中有节余的"&"Suspicious pointer conversion --------------------- 可疑的指针变换Symbol limit exceeded --------------- 符号超限Too few parameters in call -----------函数调用时的实参少于函数的参数不Too many default cases ----------------- Default 太多 (switch 语句中一个Too many error or warning messages -----------------错误或警告信息太多Too many type in declaration ----------------- 说明中种类太多Too much auto memory in function --------------- 函数用到的局部储藏太多Too much global data defined in file --------------- 文件中全局数据太多Two consecutive dots ----------------- 两个连续的句点Type mismatch in parameter xxx ---------------- 参数 xxx 种类不般配Type mismatch in redeclaration of ''xxx'' ----- xxx 重定义的种类不般配Unable to create output file ''xxx'' -------------- 无法建立输出文件xxxUnable to open include file ''xxx'' ----------- 无法打开被包含的文件xxxUnable to open input file ''xxx'' ---------------- 无法打开输入文件xxxUndefined label ''xxx'' ------------------- 没有定义的标号 xxxUndefined structure ''xxx'' ----------------- 没有定义的结构 xxxUndefined symbol ''xxx'' ----------------- 没有定义的符号 xxxUnexpected end of file in comment started on line xxx:从 xxx 行开始的解说还没有结束文件不能够结束Unexpected end of file in conditional started on line xxx :从 xxx 开始的条件语句还没有结束文件不能够结束Unknown assemble instruction ----------------未知的汇编结构Unknown option --------------- 未知的操作Unknown preprocessor directive: ''xxx'' ---------不认识的预办理命令xxxUnreachable code ------------------无路可达的代码Unterminated string or character constant------------- 字符串缺少引号User break ---------------- 用户强行中断了程序Void functions may not return a value ---- Void 种类的函数不应有返回值Wrong number of arguments -----------------调用函数的参数数目错''xxx'' not an argument ----------------- xxx 不是参数''xxx'' not part of structure ----------------- xxx 不是结构体的一部分xxx statement missing ( -------------------- xxx 语句缺少左括号xxx statement missing ------------------ xxx 语句缺少右括号xxx statement missing ; -------------------- xxx 缺少分号xxx'' declared but never used -------------------说了然 xxx 但没有使用xxx'' is assigned a value which is never used ----给 xxx 赋了值但未用过Zero length structure ------------------ 结构体的长度为零警告类错误1‘ XXX’ declare but never used变量 XXX 已定义但从未用过。

C语言技术中常见的错误与调试攻略

C语言技术中常见的错误与调试攻略

C语言技术中常见的错误与调试攻略在C语言开发中,常常会遇到各种错误和bug。

本文将介绍一些常见的C语言错误,并提供一些调试攻略,帮助您更好地解决问题。

1. 语法错误语法错误是最常见的错误之一。

在编写C语言代码时,一不小心就可能犯下语法错误,比如拼写错误、遗漏分号等。

这些错误会导致编译器无法正常解析代码,进而产生编译错误。

如何调试:- 仔细检查代码,查找可能的拼写错误。

可以借助IDE(集成开发环境)的自动补全功能来减少此类错误的发生。

- 确保每行代码以分号结尾,没有遗漏。

有些IDE会自动提示此类错误。

2. 逻辑错误逻辑错误是另一类常见的错误。

它们会导致程序在运行时不符合预期,输出错误的结果。

如何调试:- 借助调试工具,例如GDB,在代码执行过程中逐步跟踪程序。

通过查看变量的值和程序的执行流程,可以找出逻辑错误的所在。

- 使用断言(assert)来验证程序逻辑。

通过在关键位置插入断言语句,可以在程序运行时检查是否满足特定条件,从而尽早发现错误。

3. 数组越界错误在C语言中,访问数组时要确保不超出其合法索引范围。

如果越界访问数组,会导致内存访问错误,甚至程序崩溃。

如何调试:- 注意数组的索引范围,确保不超过数组长度。

可以使用循环和条件判断来避免越界访问。

- 配置编译器警告级别,以便在编译时发现可能的数组越界问题。

4. 内存泄漏内存泄漏指程序在分配内存后未释放,造成内存资源浪费的情况。

如果程序中存在内存泄漏,长时间运行可能会导致系统资源不足。

如何调试:- 使用内存调试工具,例如Valgrind,可以检测出内存泄漏情况,并指出泄漏的内存地址。

- 确保在每次动态分配内存后都要相应地释放。

5. 类型错误在C语言中,不同数据类型之间的转换需要谨慎处理。

类型错误可能导致数据丢失或计算结果不准确。

如何调试:- 确保不同数据类型之间进行转换时,能够正确保留数据的精度和范围。

- 使用类型转换符号来明确指定转换的类型,避免隐式转换导致的错误。

C语言程序调试功能和常见错误提示

C语言程序调试功能和常见错误提示

C语言程序调试功能和常见错误提示C语言程序调试是指通过查找和纠正程序中的错误,以确保程序的正常运行。

在编写C语言程序时,由于各种原因可能会出现各种错误,包括语法错误、逻辑错误和运行时错误等。

调试功能和常见错误提示有助于快速定位并解决这些错误。

一、C语言程序调试功能1.编译器错误提示:当编译器检测到语法错误时,会输出相应的错误信息。

例如,如果缺少分号或括号不匹配,编译器就会报错并指出错误的位置和原因。

这些错误提示可以直接指导程序员去定位和解决错误。

2.断点设置:调试器支持设置断点,即在程序的其中一行代码上设置断点,当程序运行到该行时,程序会自动暂停执行,以便程序员观察和修改程序状态。

通过设置断点,可以逐行或逐块跟踪程序的执行过程,准确定位错误位置。

3.单步执行:调试器支持单步执行,即一次只执行一行代码,通过逐行调试可以观察程序状态的变化,帮助找到错误或问题所在。

4.变量监视:调试器可以显示程序中的变量的当前值,通过监视变量的值,可以帮助程序员分析程序的执行过程,找到变量赋值错误或逻辑错误。

5.查看内存:调试器可以查看程序的内存状态,包括变量的内存地址和内容等。

通过查看内存可以帮助程序员理解程序在运行时的内存使用情况,定位内存错误或越界访问等问题。

6.异常处理:调试器可以捕获和显示程序中的异常信息,例如除零错误、空指针引用等。

通过异常处理,可以快速定位和解决程序中的异常问题。

7.日志记录:调试器可以记录程序的执行过程和状态,包括函数调用、变量变化等。

通过查看日志记录,可以帮助分析程序的运行轨迹,快速定位错误。

1.语法错误:语法错误是最常见的错误,编译器会给出相应的错误提示。

例如,拼写错误、缺少分号、括号不匹配等都属于语法错误。

2.链接错误:链接错误一般是由于使用未定义的函数或变量引起的。

编译器会提示找不到符号的错误。

3.运行时错误:运行时错误是指在程序运行过程中发生的错误,包括除零错误、空指针引用、数组越界等。

C语言常见错误分析和程序调试

C语言常见错误分析和程序调试

语法错误

6.误把”=“作为”等于”比较符 “=“为附值运算符 “==“为比较运算符 7.语句后面漏分号 class link{ int a; link *next }

语法错误
8.不该加分号的地方加了分号 if(a>b); printf(“a is larger than b\n”); for(i=0;i<10;i++); { scanf(“%d”,&x); printf(“%d\n”,x*x); } 9.对应该有花括弧的复合语句,忘记加花括弧 sum=0; i=1; while(i<=100) sum=sum+1; i++;
逻辑错误

25.混淆数组名与指针变量的区别 { int i,a[5]; for(i=0;i<5;i++) scanf(“%d”,a++); } {int a[5],*p; p=a; for(int i=0;i<5;i++) scanf(“%d”,p++) } {int a[5],*p; for(p=a;p<a+5;p++) scanf(“%d”,p); }
C语言程序调试

三、在改正语法错误(包括“错误 (error)”和“警告(warning)”)后,程序 经过连接(link)就得到可执行的目标程序。 运行程序,输入程序所需数据,就可得到 运行结果。应当对运行结果作分析,看它 是否符合要求。有的初学者看到运行结果 就认为没问题了,不作认真分析,这是危 险的。
C语言程序调试
错误或致命错误


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 缺少说明,通常是因为缺少 分界符如逗号、分号、右圆括号等所引起的。

C语言中常见错误分析及程序调试

C语言中常见错误分析及程序调试
i.> Oh
程 序 既 无 语 法 错 误 , 无 逻 辑 错 误 , 在 运 行 时 结 果 出 也 但 现错误甚至停止运行。这种错误更深入 、 隐蔽, 更 要求 程 序 再 用 M 和 C , 到 C , f x 加 密 X ( ) Y ( ) 到 Z 。得 :用 ( ) O 、 0 得 ;
2 8 2月 0 年l 0
电 脑 学 习
第6 期
C语言中常见 错误分析及程序调试
陈 伟’ 陈 东淼
摘 要 :总结分析 了 C语 言中常见错误 及程序调试的相关技巧。 以提高初学者 的编程 能力。
关 键 词 : C语 言 语 法 错误 逻 辑 错误 运 行错 误 程 序 调 试
x=( b sn( 1 . +q 表达式句法不对, 一 q / 28 ) ( ) 般 由表达式括弧不 epes n sna x rsi yt o l 配 对 引 起
使 用 pt m uq h 函数, 没有 使用 了库函数 , 却 缺 nld s — 少相应的文件包含 u df e y o p t a c e<t u d n en d smbl_ uer i h
Scr o u i t n [.[.]C m m T erP y, eue C mm n a o J S1: o mu ho hs ci ] .
20 0 4, 4 4):2 — 4 . 1( 6 3 6 0
() 2 攻击者想篡改信息也是不容易 的。 C 和 z分别 C、 :
隐藏在不 同的语音声道 中,即使攻击者 能发 现并篡 改也 能
参考 文 献
[】Mi L C e 1 n , h n G,Z a g X e a.A poc o G nr- h n , t1 p rah t e ea

C语言程序常见错误与调试方法

C语言程序常见错误与调试方法
C Programming
(三)C语言程序调试方法 3、对运行结果作分析,看它是否符合要求。
• 有的初学者看到运行结果就认为没问题了,不作 认真分析,这是危险的。 • 有时,数据比较复杂,难以立即判断结果是否正 确。可以事先考虑好一批“试验数据”,输入这 些数据可以很容易判断结果正确与否。 • 事实上,当程序复杂时很难把所有的可能情况全 部都试到,选择典型的临界数据作试验即可。
C Programming
3、警告 • “警告”是指被编译程序怀疑有错,但不确定, 有时可强行编译通过。例如:主函数没有返回值 时没有加void声明、double型数据被转换为float 型数据等。 • 这些警告中,有些会导致错误,有些则可以编译 通过。
C Programming
(三)C语言程序调试方法
• 编译诊断的语法错误分为3类:致命错误、错误和 警告。
C Programming
1、致命错误 • “致命错误”大多数是编译程序内部发生错误。 • 发生这类错误时,编译被迫终止,只能重新启动 编译程序。幸运的是,这类错误很少发生,但是 为了安全,编译前最好先保存程序。
C Programming
2、错误 • “错误”通常是在编译时,语法不当所引起的, 例如括号不匹配、变量为声明等。 • 产生这类错误时,编译程序会出现报错提示,根 据提示对源程序进行修改即可。这类错误是出现 最频繁的。
C Programming
1、语法错误
• 语法错误是指那些由于编程中输入不符合语法规 则产生的错误。 • 例如:表达式不完整、缺少必要的标点符号、关 键字输入错误、数据类型不匹配、循环语句或选 择语句的关键字不配对等。 • 通常,编译器对程序进行编译的过程中,会把检 测到的语法错误以提示的方式列举出来。

C语言调试常见错误及修改方法(附习题)

C语言调试常见错误及修改方法(附习题)

1.调试C程序时常见的错误类型分析一般情况下,错误主要分为两大类:一、语法错误。

对于这种错误,用编译器很容易解决。

所以,改错题的第一步是先编译,解决这类语法错误。

下面总结了二级C语言上机改错题中常见的语法错误:(1)丢失分号,或分号误写成逗号。

(2)关键字拼写错误,如本来小写变成大写。

(3)语句格式错误,例如for语句中多写或者少写分号。

(4)表达式声明错误,例如:少了()(5)函数类型说明错误。

与main()函数中不一致。

(6)函数形参类型声明错误。

例如:少*等。

(7)运算符书写错误,例如:/写成了\。

二、逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。

对于逻辑错误可以按这样的步骤进行查找。

(1)先读试题,看清题目的功能要求。

(2)通读程序,看懂程序中算法的实现方法。

(3)细看程序,发现常见错误点。

2.改错题的改错方式总结,当然这些总结只能对大部分改错行有效。

1、若错误行是函数首部,可分为以下几种情况:A、该行最后若有分号则删除,中间若有分号则改成逗号B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m个元素的指针变量,则第二维的长度必须与main 中对应数组的第二维长度相同C、函数类型不一致的问题,若函数中没有return语句则函数类型为void,若有return语句则函数的类型必须与return后变量的类型一致。

2、若错误行是if或while语句,则首先看有没有用小括号将整个表达式括起,若没有则加上小括号。

3、若错误行中有if、while、for则要特别注意条件表达式的错误问题:A、指针变量的应用,若表达式中有指针变量且没有指针运算符,则加上指针运算符B、若条件表达式中只有一个等于号,则改成两个等于号,若为其它比较运算符则一般是进行逆转或加一个等于号C、for中要用分号分隔表达式,而不是用逗号4、语法错误A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。

C语言技术的调试技巧与常见错误解决方法

C语言技术的调试技巧与常见错误解决方法

C语言技术的调试技巧与常见错误解决方法在软件开发过程中,调试是一个非常重要的环节。

无论是初学者还是有经验的开发人员,都难免会遇到各种各样的错误。

本文将介绍一些C语言技术的调试技巧和常见错误解决方法,帮助读者更好地解决问题。

一、调试技巧1. 使用打印语句打印语句是调试中最常用的方法之一。

通过在代码中插入打印语句,可以输出变量的值,从而帮助开发人员了解程序的执行流程和变量的变化情况。

在C语言中,可以使用printf函数来实现打印功能。

2. 利用断点调试断点是调试中非常有用的工具,可以让程序在指定位置停下来,供开发人员逐步调试。

在C语言中,可以使用调试器来设置断点。

通过在关键位置设置断点,可以观察变量的值、执行路径以及函数的调用情况,帮助开发人员找出错误所在。

3. 使用调试工具除了断点调试,还有一些专门的调试工具可以帮助开发人员定位错误。

例如,Valgrind是一款用于检测内存错误的工具,可以帮助开发人员找出内存泄漏、越界访问等问题。

GDB是一款强大的调试器,可以对程序进行单步调试、查看变量的值等操作。

二、常见错误解决方法1. 语法错误语法错误是C语言开发中最常见的错误之一。

这种错误通常是由于拼写错误、缺少分号等简单的错误导致的。

解决这类错误的方法是仔细检查代码,逐行排查错误,并使用编译器提供的错误信息进行修正。

2. 逻辑错误逻辑错误是指程序的逻辑关系出现问题,导致程序无法按照预期的方式执行。

解决逻辑错误的方法是通过代码审查和调试来找出错误的原因。

可以使用打印语句或断点调试来观察变量的值,从而找出程序执行过程中的错误。

3. 内存错误内存错误是指程序在使用内存时出现问题,例如内存泄漏、越界访问等。

解决内存错误的方法是使用调试工具来检测问题。

例如,Valgrind可以检测内存泄漏和越界访问等问题,并给出详细的报告。

通过分析报告,开发人员可以找出错误所在并进行修复。

4. 编译错误编译错误是指在编译过程中出现的错误。

C语言编程常见错误和程序调试

C语言编程常见错误和程序调试

15.1 C语言编程常见错误如果提示工具连接错误,则表示KEIL安装程序有问题,重新卸载,并全部删除后重新再进行安装后即可。

15.2 KEILC程序调试常见错误pling :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 的工作目录中pling:C:\8051\LED.CError 237:’LedOn’:function already has a body说明LedOn( )函数名称重复定义即有两个以上一样的函数名称解决方法修正其中的一个函数名称使得函数名称都是独立的3.WARNING 206:’DelayX1ms’: missing function-prototypeC:\8051\INPUT.CError 267 :’DelayX1ms ‘:requires ANSI-style prototype C:\8051\INPUT.C说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作声明解决方法编写DelayX1ms 的内容编写完后也要作声明或作外部声明可在delay.h 的包含档声明成外部以便其它函数调用4.***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 添加到工程文件中去5.***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 时就会出现地址不够的现象。

C语言上机程序调试功能键及常见错误提示

C语言上机程序调试功能键及常见错误提示

C语言上机程序调试功能键及常见错误提示C语言上机程序调试功能键及常见错误提示1.常用健: 激活系统菜单: 将光标在编辑窗口和、信息窗口之间切换: 加载一个文件+ : 查看程序运行结果: 得到有关编辑器在线帮助+ : 得到有关C语言的在线帮助+ : 终止正在运行的程序2.块操作KB: 定义块首KK: 定义块尾KV: 块移动KC: 块复制KY: 块删除KH: 取消块定义3.查找、替换和删除操作QF: 查找字符串QA: 查找并替换字符串Option: G(全程),B(向文件头),N(直接替换) Y : 删除一行QY: 删除从光标位置到行末的所有字符4.编译中的常见错误(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结构中的花括号不配对所致。

c程序调试方法以及常见错误

c程序调试方法以及常见错误

目录使用VC6.0对C语言程序进行调试的基本手段 (2)(1)设置固定断点或临时断点 (2)(2)单步执行程序 (2)(3)使用断言 (3)(4)与调试相关的操作菜单:Build菜单 (4)(5)与调试相关的操作菜单:Debug菜单 (4)VC6.0常见编译错误提示 (6)(1)error C2001: newline in constant (6)(2)error C2015: too many characters in constant (6)(3)error C2137: empty character constant (6)(4)error C2018: unknown character '0x##' (6)(5)error C2041: illegal digit '#' for base '8' (6)(6)error C2065: 'xxxx' : undeclared identifier (7)(7)error C2086: 'xxxx' : redefinition (7)(8)error C2374: 'xxxx' : redefinition; multiple initialization (7)(9)C2143: syntax error : missing ';' before (identifier) 'xxxx' (8)(10)error C4716: 'xxx' : must return a value (8)(11) warning C4508: 'main' : function should return a value; 'void' return typeassumed (8)(12)warning C4700: local variable 'xxx' used without having been initialized (8)VC60.0常见链接错误 (10)(1)error LNK2001: unresolved external symbol _main (10)(2)error LNK2005: _main already defined in xxxx.obj (10)使用VC6.0对C语言程序进行调试的基本手段(1)设置固定断点或临时断点所谓断点,是指定程序中的某一行,让程序运行至该行后暂停运行,使得程序员可以观察分析程序的运行过程中的情况。

C语言技术常见错误及调试技巧

C语言技术常见错误及调试技巧

C语言技术常见错误及调试技巧C语言作为一门广泛应用于软件开发领域的编程语言,常常会遇到一些技术错误。

本文将探讨一些常见的C语言技术错误,并提供一些调试技巧,帮助读者更好地解决问题。

一、内存错误在C语言中,内存错误是最常见的问题之一。

内存错误可能导致程序崩溃、数据损坏或者安全漏洞。

以下是一些常见的内存错误及解决方法:1. 内存泄漏:内存泄漏是指程序在分配内存后没有释放,导致内存占用不断增加。

解决方法是在不再使用内存时手动释放它,使用free()函数或者delete操作符。

2. 悬空指针:悬空指针是指指向已释放内存的指针,访问悬空指针会导致未定义的行为。

解决方法是在释放内存后将指针设置为NULL,避免访问已释放的内存。

3. 缓冲区溢出:缓冲区溢出是指向数组或缓冲区写入超过其容量的数据,可能导致数据覆盖或者程序崩溃。

解决方法是使用安全的字符串函数(如strcpy_s、strcat_s)或者手动检查写入边界。

二、语法错误语法错误是C语言编程过程中常见的错误类型之一。

以下是一些常见的语法错误及解决方法:1. 缺少分号:在C语言中,每条语句的结尾都需要加上分号,缺少分号会导致编译错误。

解决方法是仔细检查每条语句的末尾,确保每个分号都存在。

2. 括号不匹配:在C语言中,括号必须成对出现,不匹配的括号会导致编译错误。

解决方法是仔细检查每个括号的匹配情况,确保左右括号数量相等且位置正确。

3. 变量未声明:在使用变量之前,必须先声明它们的类型和名称。

未声明的变量会导致编译错误。

解决方法是在使用变量之前先声明它们,或者将变量声明放在头文件中以便全局使用。

三、逻辑错误逻辑错误是指程序中的错误逻辑或错误算法,导致程序运行结果与预期不符。

以下是一些常见的逻辑错误及解决方法:1. 循环错误:循环错误包括死循环和循环条件错误。

死循环会导致程序无法终止,循环条件错误会导致循环次数不正确。

解决方法是仔细检查循环条件,确保循环能够正常终止,并检查循环体中的逻辑是否正确。

浅析C语言程序调试过程及编程常见错误

浅析C语言程序调试过程及编程常见错误

浅析C语言程序调试过程及编程常见错误[摘要]由于自己实在没有编写过很大的程序,在数据结构上机过程中虽然老师要求过让我们对一些比较大的程序进行调试、分析,由于当时自己C语言基础不是很好,那些程序完全摸不着头脑,浪费了很多时间,今天老师要求我们对自己曾经编写的程序进行编译分析,谈一下自己在此过程中的学习感受,我由于没编过一些大程序,因此就将我以前对C语言中上机写程序中常出现的问题进行总结分析,以作为自己对C语言程序的认识吧!!在讨论说明C语言程序调试过程的基础上,根据实践,结合实例,总结程序调试运行过程中常出现的错误,并依据C语言的语法格式和编程规则,对这些错误进行详细的说明和纠正,以提高学习者的编程效率。

一、C语言程序调试过程所谓程序调试是指检查程序的错误以及改正程序的错误。

调试程序一般包括以下四个阶段:1.编写程序并查错;2.在C语言的编译系统(VC++6.0)中编辑源程序;3.对程序进行编译链接,并及时发现程序中存在的错误;4.最后改正错误。

C语言程序的错误主要分为两类:语法错误和逻辑错误。

二、C语言编程过程中常见错误(一)常见语法错误分析1.书写主函数时需要注意的问题。

例:1main{ int i,j,z;scanf("%d,%d",&i,&j);z=i+j;printf("%d",z);}此程序在编译时会提示:Declaration syntax error。

出现此提示说明在源文件中,可能是某个说明丢失了某些符号或输入了多余的符号。

此程序就是丢失了main函数后面的“( )”。

初学者比较容易犯这个错误。

主函数正确的写法是main( )。

2.语句后面漏写分号。

例: 2main( ){printf(“癶”?}C语言规定语句末尾必须有分号。

分号是C语句不可缺少的一部分。

此例中printf(“癶”?语句后面未写分号,会提示Statement missing ; in function main。

C语言常见错误和程序调试

C语言常见错误和程序调试
main( ) {intp,a[5]={1,3,5,7,9}; p=a; printf("%d",*p++); } • 不少人认为“*p++”的作用是先使p加1,即指向第1个元素 a[1]处,然后输出第一个元素a[1]的值3。其实应该是先执行 p++,而p++的作用是先用p的原值,用完后使p加1。p的原 值指向数组a的第0个元素a[0],因此*p就是第0个元素a[0] 的值1。结论是先输出a[0]的值,然后再使p加1。如果是 *(++p),则先使p指向a[1],然后输出a[1]的值。
• 例如: if(a>b); printf("a is larger than b\n"); • 本意为当a>b时输出“a is larger than b”的信 息。但由于在if(a>b)后加了分号,因此if语句到此 结束。即当(a>b)为真时,执行一个空语句。本来 想a≤b时不输出上述信息,但现在printf函数语句并 不从属于if语句,而是与if语句平行的语句。不论a >b还是a≤b,都输出“a is larger than b”。
• • • • • •
图1 有时还会出现负数。例如 num=196607; 输出得-1。因为196607的二进制形式为 00 00 00 00 00 00 00 1011 11 11 11 11 11 11 11 去掉高位10,低16位的值是-1 (-1的补码是:1111111111111111)。
14、对多维数组的定义和引用的方法不对。
main( ) {int a[5,4]; … printf("%d",a[1+2,2+2]); … } • 对二维数组和多维数组在定义和引用时必须将每 一维的数据分别用方括弧括起来。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言上机程序调试功能键及常见错误提示1.常用健<F10>: 激活系统菜单<F6>: 将光标在编辑窗口和、信息窗口之间切换<F3>: 加载<load>一个文件<Alt>+<F5>: 查看程序运行结果<F1>: 得到有关编辑器在线帮助<Ctrl>+<F1> : 得到有关C语言的在线帮助<Ctrl>+<Break>: 终止正在运行的程序2.块操作<Ctrl> KB: 定义块首<Ctrl> KK: 定义块尾<Ctrl> KV: 块移动<Ctrl> KC: 块复制<Ctrl> KY: 块删除<Ctrl> KH: 取消块定义3.查找、替换和删除操作<Ctrl> QF: 查找字符串<Ctrl> QA: 查找并替换字符串Option: G(全程), B(向文件头), N(直接替换)<Ctrl> Y : 删除一行<Ctrl> QY: 删除从光标位置到行末的所有字符4.编译中的常见错误(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结构之外,一般是因为花括号不匹配而引起的。

?do statement must have while do语句中缺少相应的while部分。

? Expression syntax 表达式语法错。

如表达式中含有两个连续的运算符?Extra parameter in call ‘fun’调用函数fun时给出了多余的实参。

? Function should return a value函数应该返回一个值,否则与定义时的说明类型不匹配。

?Illegal use of pointer 指针被非法引用,一般是使用了非法的指针运算。

?Invalid pointer addition指针相加非法。

一个指针(地址)可以和一个整数相加,但两个指针不能相加。

? Lvalue required赋值运算的左边是不能寻址的表达式。

?Misplaced else程序遇到了没有配对的else? No matching 表达式中的括号不配对。

?Pointer required on left side of_>在‚_>‛运算的左边只能允许一个指针而不能是一个一般的结构体变量或联合类型的变量。

? Statement missing;程序遇到了后面没有分号的语句。

?Too few parameters in call 调用某个函数时实参数目不够。

?Unable to open include file ‘XXXXXXXX.XXX’头文件找不到。

?Unexpected }或:或{ 在不希望的地方使用了}或:{。

?Undefined symbol ‘X’in function fun 函数fun中的变量X没有定义。

5.连接中的常见错误主要错误类似于‚undefined symbol _print in modula xxx‛(print没有定义),通常是函数名书写错误。

6.运行中的常见错误?Abnormal program termination程序异常终止。

通常是由于内存使用不当所致。

?Floating point error : Domain 或Divide by 0运算结果不是一个数或被0 除?Null pointer assignment 对未初始化的指针赋值,程序有严重错误。

?User break在运行程序时终止。

7.程序的跟踪调试利用Run菜单可以进行程序的跟踪调试(1)GO to Cursor (<F4>)——选择该选项使程序执行到光标所在行首先将光标移到某行(一般为可执行),选择该功能项,则程序执行到该行的前一行暂停。

此时程序处于跟踪调试状态,并有亮条显示在暂停处,此时可以查询变量或表达式的值。

(2)Trace into (<F7>)——执行一条语句或一行暂停此时程序处于跟踪调试状态,并有亮条显示在暂停处。

该选项可跟踪到被调函数的内部。

(3)Step over (<F8>)——执行一条语句或一行暂停此时程序处于跟踪调试状态,并有亮条显示在暂停处。

该选项将自定义函数当作一个语句执行,不跟踪到函程序的内部。

(4)Debug菜单程序处于跟踪状态时,可使用该菜单的选项。

其主要是使用Evaluate——目的是查询或更新变量或表达式的值。

选择Evaluate功能后,系统弹出一个对话框。

该对话框包含三个选项区域:Evaluate 域可以输入一个含有目前代码中(程序暂停区的作用域)正在使用的变量名、或含变量的表达式、或常量表达式。

按回车键后,在Result域中显示变量或表达式的值。

还可以用New value域进行调试。

如果调试程序时发现Result域显示的某变量或表达式的值不正确,并能估计出该变量或表达式的值,则可以将该值输入到New value域,继续执行程序,其目的是肯定错误发生处是否在当前位置之前。

如果输入这个正确的值并将程序继续执行完毕而结果正确,说明在目前暂停处之前已经发生错误而之后无错误。

(5)Break/Watch——用于设置断点和监视表达式。

选择Add Watch功能选项,系统将弹出一个菜单,在Add Watch框中输入变量名或表达式,按回车键后,系统在屏幕底部开辟一个窗口并显示该变量或表达式的值。

8.其它错误1."c"not an argument in function sum该标识符不是函数的参数2.array bounds missing]in function main缺少数组界限符"]"3.Array size too large in function main数组规模太大4.bad file name format in include directive在包含指令中的文件名格式不正确.5.Call of non-function in function main调用未经过定义的函数.6.cannot modify a const object in function main对常量不能进行修改.7.character constant too long in function main字符常量太大8.constant expression required in funtion main数组定义的时候,数组大小要求是常数pound statment missing}in function main复合语句漏掉符号"{"10.declaration syntax error in function main宣告语法错误11.expression syntax in function main表达式语法错误12.extra parameter in call to sum in function调用函数时使用了过多的参数13.illegal use of floating point in function main浮点数的不合法使用14.illegal pionter subtraction in function main不合法的指针相减15.invalid pointer addition in function main无效的指针相加16.out of memory in function main内存不足17.statement missing;in function main语句后面漏掉分号.警告报错1."k"is assigned a value which is never used定义了一个变量,但程序从来没用过2.possibiy incorrect assignment in function main这样的赋值可能不正确3.suspicious pointer conversion in function main可疑的指针转换4.code has no effect in funtion main代码对程序没效果Ambiguous operators need parentheses:不明确的运算需要用括号括起Ambiguous symbol'xxx':不明确的符号Argument list syntax error:参数表语法错误Array bounds missing:丢失数组界限符Array size toolarge:数组尺寸太大Bad character in paramenters:参数中有不适当的字符Bad file name format in include directive:包含命令中文件名格式不正确Bad ifdef directive synatax:编译预处理ifdef有语法错Bad undef directive syntax:编译预处理undef有语法错Bit field too large:位字段太长Call of non-function:调用未定义的函数Call to function with no prototype:调用函数时没有函数的说明Cannot modify a const object:不允许修改常量对象Case outside of switch:漏掉了case语句Case syntax error:Case语法错误Code has no effect:代码不可述不可能执行到Compound statement missing{:分程序漏掉"{"Conflicting type modifiers:不明确的类型说明符Constant expression required:要求常量表达式Constant out of range in comparison:在比较中常量超出范围Conversion may lose significant digits:转换时会丢失意义的数字Conversion of near pointer not allowed:不允许转换近指针Could not find file'xxx':找不到XXX文件Declaration missing;:说明缺少";"Declaration syntax error:说明中出现语法错误Default outside of switch:Default出现在switch语句之外Define directive needs an identifier:定义编译预处理需要标识符Division by zero:用零作除数Do statement must have while:Do-while语句中缺少while部分Enum syntax error:枚举类型语法错误Enumeration constant syntax error:枚举常数语法错误Error directive:xxx:错误的编译预处理命令Error writing output file:写输出文件错误Expression syntax error:表达式语法错误Extra parameter in call:调用时出现多余错误File name too long:文件名太长Function call missing):函数调用缺少右括号Fuction definition out of place:函数定义位置错误Fuction should return a value:函数必需返回一个值Goto statement missing label:Goto语句没有标号Hexadecimal or octal constant too large:16进制或8进制常数太大Illegal character'x':非法字符xIllegal initialization:非法的初始化Illegal octal digit:非法的8进制数字Illegal pointer subtraction:非法的指针相减Illegal structure operation:非法的结构体操作Illegal use of floating point:非法的浮点运算Illegal use of pointer:指针使用非法Improper use of a typedefsymbol:类型定义符号使用不恰当In-line assembly not allowed:不允许使用行间汇编Incompatible storage class:存储类别不相容Incompatible type conversion:不相容的类型转换Incorrect number format:错误的数据格式Incorrect use of defaultDefault使用不当Invalid indirection无效的间接运算Invalid pointer addition指针相加无效Irreducible expression tree无法执行的表达式运算Lvalue required需要逻辑值0或非0值Macro argument syntax error宏参数语法错误Macro expansion too long宏的扩展以后太长Mismatched number of parameters in definition定义中参数个数不匹配Misplaced break此处不应出现break语句Misplaced continue此处不应出现continue语句Misplaced decimal point此处不应出现小数点Misplaced elif directive不应编译预处理elifMisplaced else此处不应出现elseMisplaced else directive此处不应出现编译预处理elseMisplaced endif directive此处不应出现编译预处理endifMust be addressable必须是可以编址的Must take address of memory location必须存储定位的地址No declaration for function'xxx'没有函数xxx的说明No stack缺少堆栈No type information没有类型信息Non-portable pointer assignment不可移动的指针(地址常数)赋值Non-portable pointer comparison不可移动的指针(地址常数)比较Non-portable pointer conversion不可移动的指针(地址常数)转换Not a valid expression format type不合法的表达式格式Not an allowed type不允许使用的类型Numeric constant too large数值常太大Out of memory内存不够用Parameter'xxx'is never used能数xxx没有用到Pointer required on left side of->符号->的左边必须是指针Possible use of'xxx'before definition在定义之前就使用了xxx(警告)Possibly incorrect assignment赋值可能不正确Redeclaration of'xxx'重复定义了xxxRedefinition of'xxx'is not identical xx的两次定义不一致Register allocation failure寄存器定址失败Repeat count needs an lvalue重复计数需要逻辑值Size of structure or array not known结构体或数给大小不确定Statement missing;语句后缺少";"Structure or union syntax error X构体或联合体语法错误Structure size too large结构体尺寸太大Sub scripting missing]下标缺少右方括号Superfluous&with function or array函数或数组中有多余的"&" Suspicious pointer conversion可疑的指针转换Symbol limit exceeded符号超限Too few parameters in call函数调用时的实参少于函数的参数不Too many default cases Default太多(switch语句中一个)Too many error or warning messages错误或警告信息太多Too many type in declaration说明中类型太多Too much auto memory in function函数用到的局部存储太多Too much global data defined in file文件中全局数据太多Two consecutive dots两个连续的句点Type mismatch in parameter xxx数xxx类型不匹配Type mismatch in redeclaration of'xxx'xx重定义的类型不匹配Unable to create output file'xxx'无法建立输出文件xxxUnable to open include file'xxx'无法打开被包含的文件xxxUnable to open input file'xxx'无法打开输入文件xxxUndefined label'xxx'没有定义的标号xxxUndefined structure'xxx'没有定义的结构xxxUndefined symbol'xxx'没有定义的符号xxxUnexpected end of file in comment started on line xxx从xxx行开始的注解尚未结束文件不能结束Unexpected end of file in conditional started on line xxx从xxx开始的条件语句尚未结束文件不能结束Unknown assemble instruction未知的汇编结构Unknown option未知的操作Unknown preprocessor directive:'xxx'不认识的预处理命令xxxUnreachable code无路可达的代码Unterminated string or character constant字符串缺少引号User break用户强行中断了程序Void functions may not return a value Void类型的函数不应有返回值Wrong number of arguments调用函数的参数数目错'xxx'not an argument xxx不是参数'xxx'not part of structure xxx不是结构体的一部分xxx statement missing(xx语句缺少左括号xxx statement missing)xxx语句缺少右括号xxx statement missing;xxx缺少分号xxx'declared but never used说明了xxx但没有使用xxx'is assigned a value which is never used给xxx赋了值但未用过Zero length structure结构体的长度为零。

相关文档
最新文档