c语言错误调试大全

合集下载

c语言常见问题及解决方法

c语言常见问题及解决方法

c语言常见问题及解决方法
一、C语言常见问题及解决方法
1、程序编译错误,原因及解决方法
(1)语法错误:检查程序中出现的缩进、分号、圆括号、大括号的位置,以及程序中变量的定义,保证程序的语法正确。

(2)类型错误:检查程序中关系运算符两边操作数的类型是否匹配,以及变量的使用是否正确,保证每一步运算的类型正确。

(3)变量未声明:检查变量在程序中是否已经声明,声明后才能正确使用。

2、程序运行错误,原因及解决方法
(1)程序中存在逻辑错误:检查程序中的流程是否按设计要求正确,以及程序输出结果是否正确。

(2)程序中存在数据错误:检查程序中的数据是否正确,数据输入、输出以及运算结果都要求正确。

(3)程序运行错误:检查程序中的函数调用是否正确,注意函数的参数和返回值的类型要求。

3、程序编译成功却无法执行,原因及解决方法
这可能是程序出现了语法错误,编译器无法判断,所以编译成功,但是在执行时系统无法识别出程序的命令。

可以通过重新编写程序,查找错误语句的方式查找程序错误,并根据提示修改程序,以解决此问题。

C语言程序设计中的常见错误和解决

C语言程序设计中的常见错误和解决

C语言程序设计中的常见错误和解决在C语言程序设计中,很多初学者经常会遇到一些常见的错误。

这些错误可能是语法错误、逻辑错误或者是其他一些常见问题导致的。

本文将介绍一些经常出现的C语言程序设计错误,并提供相应的解决方法,帮助读者更好地理解和掌握C语言编程。

一、语法错误1. 括号未匹配括号未匹配是C语言中常见的语法错误之一。

在编写代码时,经常会使用到括号,如if语句、for循环等。

如果不小心忘记关闭某个括号,就会导致括号未匹配的错误。

解决方法:仔细检查代码中的括号是否匹配,并确保每个左括号都有相应的右括号。

2. 分号丢失分号丢失是C语言中另一个常见的语法错误。

在C语言中,分号用于分隔语句,如果遗漏了分号,编译器就无法识别出语句的结束。

解决方法:检查每一行语句的末尾,确保每个语句都以分号结尾。

3. 变量未声明在使用变量之前,必须先声明该变量。

如果没有先声明变量就直接使用,编译器将无法识别该变量,从而报错。

解决方法:在使用变量之前,先进行变量声明。

二、逻辑错误1. 循环控制条件错误在编写循环语句时,控制条件的错误是常见的逻辑错误。

如果循环的控制条件错误,循环可能无法正常结束或者根本无法执行。

解决方法:仔细检查循环的控制条件,确保条件符合预期,并在循环体内更新循环变量。

2. 数组越界访问在C语言中,数组的索引从0开始,通过索引访问数组元素时,如果索引超出了数组的范围,就会导致数组越界访问的错误。

解决方法:确保数组索引在正确的范围内,避免越界访问。

如果需要遍历数组,可以使用循环来控制数组的访问范围。

三、其他常见问题及解决方法1. 变量类型不匹配在赋值操作或者表达式计算时,如果不同类型的变量之间进行操作,则会导致变量类型不匹配的错误。

解决方法:确保操作的变量类型相同或者进行强制类型转换,以保证变量类型的匹配。

2. 内存泄漏在C语言中,手动分配内存的操作是常见的。

如果分配了内存空间,但在使用完毕后未及时释放,就会导致内存泄漏。

c语言调试中出现的典型问题及解决方法

c语言调试中出现的典型问题及解决方法

c语言调试中出现的典型问题及解决方法
在C语言调试过程中,常见的典型问题包括:
1. 程序运行崩溃或卡死:
- 检查内存越界访问,确保不会越界读写数组或指针;
- 验证动态内存分配的正确性;
- 检查函数调用的逻辑错误,如无限递归调用或死循环等;
- 使用断点调试,逐步跟踪程序执行过程,找到导致崩溃的
代码行。

2. 输出结果与预期不符:
- 检查变量的初始化和赋值是否正确;
- 使用printf语句输出变量的值,以便观察中间变量和计算
结果;
- 对比程序的期望输出和实际输出,找到差异。

3. 逻辑错误:
- 检查条件判断语句是否正确,确保程序根据预期逻辑执行; - 检查循环语句的终止条件,避免无限循环;
- 使用printf语句输出中间变量的值,观察程序执行过程中
的变化。

4. 内存泄漏:
- 检查动态内存的申请和释放是否配对使用;
- 使用内存检测工具,如Valgrind,检测内存泄漏和非法内
存访问;
- 注意释放动态内存的时机,在不再使用该内存时及时释放。

5. 多线程问题:
- 确保线程同步正确,避免数据竞争和死锁现象;
- 使用线程调试工具,如GDB,跟踪线程的执行和状态变化; - 检查线程之间的通信和同步机制是否正确使用。

总体而言,解决问题的方法主要包括:仔细检查代码逻辑、使用断点调试、输出中间结果、使用调试工具等。

对于复杂的问题,可以采用分而治之的思路,逐步排查问题所在。

此外,阅读官方文档和相关参考资料也是解决问题的好方法。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C语言报错整理大全

C语言报错整理大全

C语言错误代码及错误信息错误释义error 1: Out of memory 内存溢出error 2: Identifier expected 缺标识符error 3: Unknown identifier 未定义的标识符error 4: Duplicate identifier 重复定义的标识符error 5: Syntax error 语法错误error 6: Error in real constant 实型常量错误error 7: Error in integer constant 整型常量错误error 8: String constant exceeds line 字符串常量超过一行error 10: Unexpected end of file 文件非正常结束error 11: Line too long 行太长error 12: Type identifier expected 未定义的类型标识符error 13: Too many open files 打开文件太多error 14: Invalid file name 无效的文件名error 15: File not found 文件未找到error 16: Disk full 磁盘满error 17: Invalid compiler directive 无效的编译命令error 18: Too many files 文件太多error 19: Undefined type in pointer def 指针定义中未定义类型error 20: Variable identifier expected 缺变量标识符error 21: Error in type 类型错误error 22: Structure too large 结构类型太长error 23: Set base type out of range 集合基类型越界error 24: File components may not be files or objectsfile分量不能是文件或对象error 25: Invalid string length 无效的字符串长度error 26: Type mismatch 类型不匹配error 27:error 27:Invalid subrange base type 无效的子界基类型error 28:Lower bound greater than upper bound 下界超过上界error 29:Ordinal type expected 缺有序类型error 30:Integer constant expected 缺整型常量error 31:Constant expected 缺常量error 32:Integer or real constant expected 缺整型或实型常量error 33:Pointer Type identifier expected 缺指针类型标识符error 34:Invalid function result type 无效的函数结果类型error 35:Label identifier expected 缺标号标识符error 36:BEGIN expected 缺BEGINerror 37:END expected 缺ENDerror 38:Integer expression expected 缺整型表达式error 39:Ordinal expression expected 缺有序类型表达式error 40:Boolean expression expected 缺布尔表达式error 41:Operand types do not match 操作数类型不匹配error 42:Error in expression 表达式错误error 43:Illegal assignment 非法赋值error 44:Field identifier expected 缺域标识符error 45:Object file too large 目标文件太大error 46:Undefined external 未定义的外部过程与函数error 47:Invalid object file record 无效的OBJ文件格式error 48:Code segment too large 代码段太长error 49:Data segment too large 数据段太长error 50:DO expected 缺DOerror 51:Invalid PUBLIC definition 无效的PUBLIC定义error 52:Invalid EXTRN definition 无效的EXTRN定义error 53: Too many EXTRN definitions 太多的EXTRN定义error 54:OF expected 缺OFerror 55:INTERFACE expected 缺INTERFACEerror 56:Invalid relocatable reference 无效的可重定位引用error 57:THEN expected 缺THENerror 58:TO or DOWNTO expected 缺TO或DOWNTO error 59:Undefined forward 提前引用未经定义的说明error 61:Invalid typecast 无效的类型转换error 62:Division by zero 被零除error 63:Invalid file type 无效的文件类型error 64:Cannot read or write variables of this type 不能读写此类型变量error 65:Pointer variable expected 缺指针类型变量error 66:String variable expected 缺字符串变量error 67:String expression expected 缺字符串表达式error 68:Circular unit reference 单元UNIT部件循环引用error 69:Unit name mismatch 单元名不匹配error 70:Unit version mismatch 单元版本不匹配error 71:Internal stack overflow 内部堆栈溢出error 72:Unit file format error 单元文件格式错误error 73:IMPLEMENTATION expected 缺IMPLEMENTATIONerror 74:Constant and case types do not match 常量和CASE类型不匹配error 75:Record or object variable expected 缺记录或对象变量error 76:Constant out of range 常量越界error 77:File variable expected 缺文件变量error 78:Pointer expression expected 缺指针表达式error 79:Integer or real expression expected 缺整型或实型表达式error 80:Label not within current block 标号不在当前块内error 81:Label already defined 标号已定义error 82:Undefined label in preceding statement part 在前面未定义标号error 83:Invalid @ argument 无效的@参数error 84:UNIT expected 缺UNITerror 85: ";" expected 缺“;”error 86:":" expected 缺“:”error 87:"," expected 缺“,”error 88:"(" expected 缺“(”error 89:")" expected 缺“)”error 90:"=" expected 缺“=”error 91:":=" expected 缺“:=”error 92:"[" or "(." Expected 缺“[”或“(.”error 93: "]" or ".)" expected 缺“]”或“.)”error 94:"." expected 缺“.”error 95: ".." expected 缺“..”error 96:Too many variables 变量太多error 97:Invalid FOR control variable 无效的FOR循环控制变量error 98:Integer variable expected 缺整型变量error 99:Files and procedure types are not allowed here 该处不允许文件和过程类型error 100:String length mismatch 字符串长度不匹配error 101:Invalid ordering of fields 无效域顺序error 102:String constant expected 缺字符串常量error 103:Integer or real variable expected 缺整型或实型变量error 104:Ordinal variable expected 缺有序类型变量error 105:INLINE error INLINE错误error 106:Character expression expected 缺字符表达式error 107:Too many relocation items 重定位项太多error 108:Overflow in arithmetic operation 算术运算溢出error 112:CASE constant out of range CASE常量越界error 113:Error in statement 表达式错误error 114:Cannot call an interrupt procedure 不能调用中断过程error 116:Must be in 8087 mode to compile this 必须在8087模式编译error 117:Target address not found 找不到目标地址error 118:Include files are not allowed here 该处不允许INCLUDE文件error 119:No inherited methods are accessible here 该处继承方法不可访问error 121:Invalid qualifier 无效的限定符error 122:Invalid variable reference 无效的变量引用error 123:Too many symbols 符号太多error 124:Statement part too large 语句体太长error 126:Files must be var parameters 文件必须是变量形参error 127:Too many conditional symbols 条件符号太多error 128:Misplaced conditional directive 条件指令错位error 129:ENDIF directive missing 缺ENDIF指令error 130:Error in initial conditional defines 初始条件定义错误error 131:Header does not match previous definition 和前面定义的过程或函数不匹配error 133:Cannot evaluate this expression 不能计算该表达式error 134:Expression incorrectly terminated 表达式错误结束error 135:Invalid format specifier 无效格式说明符error 136:Invalid indirect reference 无效的间接引用error 137:Structured variables are not allowed here 该处不允许结构变量error 138:Cannot evaluate without System unit 没有System单元不能计算error 139:Cannot access this symbol 不能存取符号error 140:Invalid floating point operation 无效的符号运算error 141:Cannot compile overlays to memory 不能编译覆盖模块至内存error 142:Pointer or procedural variable expected 缺指针或过程变量error 143:Invalid procedure or function reference 无效的过程或函数调用error 144:Cannot overlay this unit 不能覆盖该单元error 146:File access denied 不允许文件访问error 147:Object type expected 缺对象类型error 148:Local object types are not allowed 不允许局部对象类型error 149:VIRTUAL expected 缺VIRTUALerror 150: Method identifier expected 缺方法标识符error 151:Virtual constructors are not allowed 不允许虚构造函数error 152:Constructor identifier expected 缺构造函数标识符error 153:Destructor identifier expected 缺析构函数标识符error 154:Fail only allowed within constructors 只能在构造函数内使用Fail标准过程error 155:Invalid combination of opcode and operands 操作数与操作符无效组合error 156:Memory reference expected 缺内存引用指针error 157:Cannot add or subtract relocatable symbols 不能加减可重定位符号error 158:Invalid register combination 无效寄存器组合error 159:286/287 instructions are not enabled 未激活286/287指令error 160:Invalid symbol reference 无效符号指针error 161:Code generation error 代码生成错误error 162:ASM expected 缺ASMerror 166:Procedure or function identifier expected 缺过程或函数标识符error 167:Cannot export this symbol 不能输出该符号error 168:Duplicate export name 外部文件名重复error 169:Executable file header toerror 170:Too many segments 段太多fatal error C1004: unexpected end of file found 未找到文件末尾(可能是括号匹配问题)fatal error C1021: invalid preprocessor command '1nclude' 无效的编译预处理命令'1nclude' fatal error C1083: Cannot open include file: 'stdi.h': No such file or directory 不能打开头文件'stdi.h',文件或文件夹不存在 error C2101: '&' on constant 不能计算常量的地址error C2059: syntax error : 'while' 在'while'附近,存在语法错误error C2061: syntax error : identifier 'x' 标识符x的附近,存在语法错误 error C2065: 'i' : undeclared identifier 变量i未定义error C2078: too many initializers 数组/结构等变量初始化时的数据太多error C2087: '<Unknown>' : missing subscript 丢失数组下标error C2106: '=' : left operand must be l-value '='的左侧应当是左值,即不能是常量 error C2115: '=' : incompatible types '='两侧的类型不兼容error C2133: 'a' : unknown size a(可能是数组名)的大小不确定。

C语言编程中常见的五种错误及对应解决方案

C语言编程中常见的五种错误及对应解决方案

C语⾔编程中常见的五种错误及对应解决⽅案⽬录1. 未初始化的变量2. 数组越界3. 字符串溢出4. 重复释放内存5. 使⽤⽆效的⽂件指针前⾔:C 语⾔有时名声不太好,因为它不像近期的编程语⾔(⽐如 Rust)那样具有内存安全性。

但是通过额外的代码,⼀些最常见和严重的 C 语⾔错误是可以避免的。

即使是最好的程序员也⽆法完全避免错误。

这些错误可能会引⼊安全漏洞、导致程序崩溃或产⽣意外操作,具体影响要取决于程序的运⾏逻辑。

下⽂讲解了可能影响应⽤程序的五个错误以及避免它们的⽅法:1. 未初始化的变量程序启动时,系统会为其分配⼀块内存以供存储数据。

这意味着程序启动时,变量将获得内存中的⼀个随机值。

有些编程环境会在程序启动时特意将内存“清零”,因此每个变量都得以有初始的零值。

程序中的变量都以零值作为初始值,听上去是很不错的。

但是在 C 编程规范中,系统并不会初始化变量。

看⼀下这个使⽤了若⼲变量和两个数组的⽰例程序:#include <stdio.h>#include <stdlib.h>intmain(){int i, j, k;int numbers[5];int *array;puts("These variables are not initialized:");printf(" i = %d\n", i);printf(" j = %d\n", j);printf(" k = %d\n", k);puts("This array is not initialized:");for (i = 0; i < 5; i++) {printf(" numbers[%d] = %d\n", i, numbers[i]);}puts("malloc an array ...");array = malloc(sizeof(int) * 5);if (array) {puts("This malloc'ed array is not initialized:");for (i = 0; i < 5; i++) {printf(" array[%d] = %d\n", i, array[i]);}free(array);}/* done */puts("Ok");return 0;}这个程序不会初始化变量,所以变量以系统内存中的随机值作为初始值。

C语言技术中的错误处理与调试技巧

C语言技术中的错误处理与调试技巧

C语言技术中的错误处理与调试技巧在使用C语言进行编程开发时,错误处理和调试技巧是非常重要的。

无论是初学者还是经验丰富的开发者,都会遇到各种各样的错误和问题。

本文将探讨一些常见的错误处理和调试技巧,帮助读者更好地解决问题和提高代码的质量。

一、错误处理1. 错误码和错误信息在C语言中,错误通常通过返回值来表示。

一个常见的做法是使用错误码来表示不同类型的错误,然后通过错误码来判断具体的错误类型。

同时,为了方便调试和提示用户,还可以提供相应的错误信息。

例如,我们可以定义一个错误码的枚举类型:```ctypedef enum {ERROR_NONE = 0,ERROR_INVALID_INPUT,ERROR_OUT_OF_MEMORY,ERROR_FILE_NOT_FOUND,// ...} ErrorCode;```然后,在函数中返回错误码:```cErrorCode doSomething() {// ...if (errorCondition) {return ERROR_INVALID_INPUT;}// ...return ERROR_NONE;}```2. 异常处理除了使用错误码来表示错误,C语言还可以使用异常处理机制。

异常处理可以更方便地处理一些特殊情况,例如内存分配失败等。

C语言中的异常处理通常使用`setjmp`和`longjmp`函数来实现。

`setjmp`函数用于设置一个跳转点,而`longjmp`函数用于从跳转点跳转回来。

```c#include <setjmp.h>jmp_buf jumpBuffer;void handleException() {// 处理异常// ...longjmp(jumpBuffer, 1);}void doSomething() {if (setjmp(jumpBuffer) == 0) {// 正常执行// ...if (errorCondition) {handleException();}// ...} else {// 异常处理// ...}}```二、调试技巧1. 打印调试信息在调试过程中,打印调试信息是一种常用的方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AAmbiguous operators need parentheses不明确的运算需要用括号括起。

二义性操作符需要括号,但两个移位、关系或按位操作符在一起使用而不加括号时,发现此警告;但一个加法或减法操作符不加括号而与一个移位操作符出现在一起时,也发出此警告。

Ambiguous symbol ''xxx''不明确的符号,二义性符号…xxxxxxxx‟。

两个或多个结构的某一域名相同,但具有的偏移、类型不同。

在变量或表达式中引用该域而未带结构名时,将产生二义性,此时需修改某个域名或在引用时加上结构名。

Argument list syntax error参数表语法错误参数表出现语法错误。

函数调用时,参数与参数之间必须以逗号隔开,并以一右括号结束。

若源文件中含有一个其后不是逗号也不是右括号的参数,则出错。

Argument #missing name参数#名丢失。

参数名已脱离用于定义函数的函数原型,如果函数以原型定义,该函数必须包括所有的参数名。

Array bounds missing丢失数组界限符数组的界限符…]‟丢失。

原因是在源文件中定义了一个数组,但此数组没有以一右方括号结束。

,Array size toolarge数组尺寸太大,数组长度太长。

定义的数组太大,而可用内存不够。

Assembler startement too long汇编语句太长。

内部汇编语句最长不能超过480个字节。

BBad call of in line function内部函数非法调用在使用一个宏定义的内部函数时,没有正确调用。

一个内部函数以下划双线(_)开始和结束。

Bad character in paramenters参数中有不适当的字符Bad configuration file配置文件不正确。

Turboc.cfg配置文件中包含不是合适命令行选择项非注解文字。

配置文件命令选择项必须以一短横线开始。

Bad file name format in include directive包含命令中文件名格式不正确使用include指令时,文件名格式不正确。

include 文件名必须用引号或尖括号括起来。

例如:include "stdio.h"或include <stdio.h>,否则将产生此类错误。

如果使用了宏定义,则生成的扩展正文也不正确(因为无引号)。

Bad ifdef directive synatax编译预处理ifdef有语法错,ifdef指令语法错误。

#ifdef必须包括一个标识符(非其他东西)作为该指令体。

Bad ifndef directive syntaxifndef指令语法错误。

#ifndef必须包含一个标识符(不能是任何其他东西)作为该指令体。

Bad undef directive syntax编译预处理undef有语法错,undef指令语法错误。

#undef指令必须包含一个标识符(不能是任何其他东西)作为该指令体。

Bit field too large位字段太长Bad file size syntax位字段长度语法错误。

一个位字段必须是1 16位的常数表达式。

Both return and return of a value used有相矛盾的return语句。

编译程序发现同时有带值返回和不带值返回的return语句时,发出此警告CCall of non function调用未定义的函数,调用未定义函数。

这是因为正被调用的函数无定义,通常是由于不正确的函数说明或函数名拼错造成的。

Call to function with no prototype调用函数时没有函数的说明。

调用没有给出函数原型的函数。

Call to function …xxx‟with prototype调用没有给出函数原型的…xxx‟函数。

Cannot modify a const object不允许修改常量对象,不能修改一个常量对象。

对定义为常量的对象进行不合法操作(比如对常量赋值)引起此类错误。

Case outside of switch漏掉了case 语句,Case出现在switch外,编译程序发现Case语句出现在switch 语句外面,通常是由于括号不匹配造成的。

Case statement missing …:‟switch结构中的某个case之后缺少冒号。

Case syntax errorCase 语法错误,Case语法错误。

Case中包含了一些不正确的符号。

Character constant too long字符常量太长。

字符常量只能是一个字符长度。

Code has no effect代码不可述不可能执行到。

无效的运算代码。

但编译程序遇到一个包含无效操作符的语句时,就发出此类警告。

Compound statement missing{分程序漏掉"{"Case语句漏掉。

Case语句必须包含一个以冒号终结的常量表达式。

造成的原因可是丢了冒号或在冒号前飞多了别的符号。

复合语句漏掉了大括号“}”。

编译文件扫描到源文件末时,未发现结束大括号,通常是由于大括号不匹配造成的。

Conflicting type modifiers不明确的类型说明符,类型修饰符冲突。

对同一指针,只能制定一种变址修饰符(如near或far);而对于同一函数,也只能给出一种语言修饰符(如cdecl、pascal或interrupt)。

Constant expression required要求常量表达式,要求常量表达式。

因为数组的大小不须是常量,此类错误通常是由于#define常量的拼写出错而造成的。

定义数组时指定的数组长度不是常量表达式。

Constant is long10进制数常量太大,已被当作长整型。

当编译程序遇到一个大于32767的10进制常量,或一个大于65535,而其后没有字母…I‟ 或…L‟的八进制常量时,自动将此常量当作long类型处理。

Constant out of range in comparison在比较中常量超出范围。

常量比较超出了范围。

在源文件中两个常量比较时,其中一个常量超出了另一个常量所允许的范围,即发出此警告。

例如,一个无符号常量跟1比较就没有意义。

为了得到一个大于32767(十进制)的无符号常量,可以在常量前加上unsigned或在常量后面加上字母…u‟或…U‟。

例如(unsigned)65535或65535u。

Conversion may lose significant digits转换时会丢失意义的数字。

转换可能丢失高位数字。

在赋值操作或其他情况下,源程序要求把long或unsigned long类型转变成int或unsigned int类型。

在有些机器上,因为int型和long型变量具有相同长度,这种转换可能改变程序的输出特性。

Conversion of near pointer not allowed不允许转换近指针。

Could not find file ''xxx''找不到XXX文件,找不到'xxxxx.xxx'文件。

编译程序找不到命令行山给出的文件。

DDeclaration missing ;说明缺少";"说明漏掉“;”。

源文件中包含一个struct或union域的说明,但后面漏掉了分号。

Declaration needs type or storage class说明必须给出类型存储类别。

说明必须包含一个类型或一个存储类别。

Declaration syntax error说明中出现语法错误,说明出现语法错误。

原因可能在源文件中,某个说明丢失了一些符号或有多余的符号。

结构体或联合类型的定义后缺少分号。

Declaration was expected缺少说明,通常是因为缺少分界符如逗号、分号、右圆括号等所引起的。

Default outside of switchDefault 出现在switch语句之外,Default在switch外出现。

编译程序发现default 语句出现在switch语句之外,通常是由于括号不匹配造成的。

Define directive needs an identifier定义编译预处理需要标识符,Default指令必须有一个标识符。

#define后面的第一个非空格符必须是一个标识符,若编译程序发现一些其他程序,则出现本错误。

Division by zero用零作除数,除数为零。

源文件的常量表达式中,出现了除数为零的情况。

Do statement must have whileDo while语句中缺少while部分,Do语句中必须有while。

若源文件中包含一个无while关键字的do语句时,将出现此类错误。

Do while statement missing (Do while语句中漏掉了…(‟。

编译程序发现在do语句中while关键字后无左括号。

Do while statement missing )Do while语句中漏掉了…)‟。

编译程序发现在do语句中条件表达式后无右括号。

Do while statement missing ;Do while语句中漏掉了分号…;‟。

在do语句的条件表达式中,编译程序发现右括号后无分号。

Duplicate CaseCase后的常量表达式重复。

switch语句的每一个case行必须有一个唯一的常量表达式值。

EEnum syntax error枚举类型语法错误,Enum语法出现错误。

eunm说明的标识符表的格式不对。

Enumeration constant syntax error枚举常数语法错误,枚举常量语法错误。

赋给enum类型变量的表达式值不为常量。

Error directive :xxx错误的编译预处理命令,Error指令:xxx。

源文件处理#error指令时,显示该指令的信息。

Error writing output file写输出文件错误,写输出文件出现错误。

通常是由于磁盘空间满造成的,尽量删掉一些不必要的文件。

Expression syntax error表达式语法错误,表达式语法错误。

当编译程序分析一个表达式发现有一些严重错误时,出现此类报错信息,通常是由于两个连续操作符,括号不匹配或缺少括号,前一语句漏掉了分号等引起的。

Extra parameter in call调用时出现多余错误,调用时出现多余参数。

调用函数时,其实际参数的个数多余函数定义中的形参的个数。

Extra parameter in call to xxxxxxxx调用xxxxxxxx函数时出现了额外多余的参数。

相关文档
最新文档