C++_编译器常见提示错误_相关解析

合集下载

c语言常见编译错误提示

c语言常见编译错误提示

c语言常见编译错误提示1) error C2001: newline in constant编号:C2001直译:在常量中出现了换行。

错误分析:1.字符串常量、字符常量中是否有换行。

2.在这句语句中,某个字符串常量的尾部是否漏掉了双引号。

3.在这语句中,某个字符创常量中是否出现了双引号字符“"”,但是没有使用转义符“\"”。

4.在这句语句中,某个字符常量的尾部是否漏掉了单引号。

5.是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。

2) error C2015: too many characters in constant编号:C2015直译:字符常量中的字符太多了。

错误分析:单引号表示字符型常量。

一般的,单引号中必须有且只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。

另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:i f (x == 'x || x == 'y') { … }值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASC码作为一个整数(int,4B)整体看待的数字。

3) error C2137: empty character constant编号:C2137直译:空的字符定义。

错误分析:原因是连用了两个单引号,而中间没有任何字符,这是不允许的。

4) error C2018: unknown character '0x##'编号:C2018直译:未知字符‘0x##’。

错误分析:0x##是字符ASC码的16进制表示法。

这里说的未知字符,通常是指全角符号、字母、数字,或者直接输入了汉字。

如果全角字符和汉字用双引号包含起来,则成为字符串常量的一部分,是不会引发这个错误的。

5) error C2041: illegal digit '#' for base '8'编号:C2141直译:在八进制中出现了非法的数字‘#’(这个数字#通常是8或者9)。

C51-keil编译常见错误和警告处理

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 字节空间。

gcc常见的编译警告与错误(按字母顺序排列)

gcc常见的编译警告与错误(按字母顺序排列)

gcc 常见的编译警告与错误〔按字母顺序排列〕C语言初学者遇到的最大问题往往是看不懂编译错误,进而不知如何修改程序。

有鉴于此,本附录罗列了用gcc编译程序时经常出现的编译警告与错误。

需要提醒读者的是,出现警告〔warning〕并不影响目标程序的生成,但出现错误〔error〕则无法生成目标程序。

为便于读者查阅,下面列出了经常遇到的警告与错误,给出了中英文对照〔英文按字典顺序排列〕,并对局部错误与警告做了必要的解释。

*%s e*pects \FILENAME\ or …*%s 需要\FILENAME\ 或…*%s is a deprecated GCC e*tension*%s 是一个已过时的GCC 扩展*%s is a GCC e*tension*%s 是一个GCC 扩展*~ error:*~ 错误:*~ In file included from %s:%u*~ 在包含自%s:%u 的文件中*~ internal error:*~ 内部错误:*~ no newline at end of file*~ 文件未以空白行完毕*~ warning:*~ 警告:*elif after *else*elif 出现在*else 后*elif without *if*elif 没有匹配的*if*else after *else*else 出现在*else 后*else without *if*else 没有匹配的*if*endif without *if*endif 没有匹配的*if*include nested too deeply*include 嵌套过深*include_ne*t in primary source file*include_ne*t 出现在主源文件中*pragma %s %s is already registered*pragma %s %s 已经被注册*pragma %s is already registered*pragma %s 已经被注册*pragma once in main file*pragma once 出现在主文件中*pragma system_header ignored outside include file*pragma system_heade 在包含文件外被忽略%.*s is not a valid universal character%.*s 不是一个有效的Unicode 字符%s in preprocessing directive预处理指示中出现%s%s is a block device%s 是一个块设备%s is shorter than e*pected%s 短于预期%s is too large%s 过大%s with no e*pression%s 后没有表达式%s: not used because `%.*s’ defined as `%s’ not `%.*s’%s:未使用因为‘%.*s’被定义为‘%s’而非‘%*.s’%s: not used because `%.*s’ is poisoned%s:未使用因为‘%.*s’已被投毒%s: not used because `%.*s’ not defined%s:未使用因为‘%.*s’未定义%s: not used because `%s’ is defined%s:未使用因为‘%s’已定义%s: not used because `__COUNTER__’ is invalid%s:未使用因为‘__COUNTER__’无效(\%s\ is an alternative token for \%s\ in C++)(在C++ 中"%s〞会是"%s〞的替代标识符)(this will be reported only once per input file)(此警告为每个输入文件只报告一次)\%s\ after * is not a positive integer* 后的"%s〞不是一个正整数\%s\ after *line is not a positive integer*line 后的"%s〞不是一个正整数\%s\ cannot be used as a macro name as it is an operator in C++ "%s〞不能被用作宏名,因为它是C++ 中的一个操作符\%s\ is not a valid filename"%s〞不是一个有效的文件名\%s\ is not defined"%s〞未定义\%s\ may not appear in macro parameter list"%s不能出现在宏参数列表中\%s\ re-asserted重断言"%s〞\%s\ redefined"%s重定义\/*\ within ment"/*出现在注释中\\* used with no following he* digits\\* 后没有16 进制数字\defined\ cannot be used as a macro name"defined不能被用作宏名__COUNTER__ e*panded inside directive with -fdirectives-only带-fdirectives-only 时__COUNTER__ 在指示中扩展__VA_ARGS__ can only appear in the e*pansion of a C99 variadic macro __VA_ARGS__ 只能出现在C99 可变参数宏的展开中_Pragma takes a parenthesized string literal_Pragma 需要一个括起的字符串字面常量‘%.*s’ is not in NFC‘%.*s’不在NFC 中‘%.*s’ is not in NFKC‘%.*s’不在NFKC 中‘**’ cannot appear at either end of a macro e*pansion‘**’不能出现在宏展开的两端‘*’ is not followed by a macro parameter‘*’后没有宏参数‘$’ in identifier or number‘$’出现在标识符或数字中‘:’ without preceding ‘"’‘:’前没有‘"’‘"’ without following ‘:’‘"’后没有‘:’'return' with a value, in function returning void在void返回类型的函数中,return返回值。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如何解决C语言中的编译错误与警告

如何解决C语言中的编译错误与警告

如何解决C语言中的编译错误与警告C语言是一种广泛应用于系统编程和嵌入式开发的编程语言,它的编译过程中常常会出现各种错误和警告。

这些错误和警告可能会导致程序无法正确编译或者在运行时出现问题。

因此,解决C语言中的编译错误与警告是每个程序员都需要掌握的重要技能。

本文将介绍一些常见的编译错误和警告,并提供一些解决方法。

一、理解编译错误和警告的含义在解决编译错误和警告之前,我们首先需要理解它们的含义。

编译错误是指在编译过程中发现的语法错误或者逻辑错误,这些错误会导致程序无法正确编译。

编译警告是指在编译过程中发现的一些潜在的问题,虽然不会导致程序无法编译,但可能会导致程序在运行时出现问题。

二、常见的编译错误和警告1. 语法错误:语法错误是最常见的编译错误之一,它通常是由于编程人员在编写代码时遗漏了分号、括号不匹配等导致的。

解决语法错误的方法是仔细检查代码,确保语法正确。

2. 未声明的标识符:当使用一个未声明的标识符时,编译器会报错。

解决这个问题的方法是在使用标识符之前先进行声明或者引入相应的头文件。

3. 类型不匹配:类型不匹配是指在赋值或者函数调用过程中,变量的类型与期望的类型不一致。

解决这个问题的方法是检查变量的类型,并进行相应的类型转换。

4. 未使用的变量:编译器会对未使用的变量发出警告,这可能是由于代码中存在一些无用的变量。

解决这个问题的方法是删除未使用的变量或者对其进行使用。

5. 未初始化的变量:未初始化的变量可能导致程序在运行时出现未定义的行为。

解决这个问题的方法是在使用变量之前先进行初始化。

6. 函数返回值不匹配:函数的返回值类型与函数定义时声明的返回值类型不一致会导致编译错误。

解决这个问题的方法是检查函数的返回值类型,并进行相应的修改。

7. 潜在的内存泄漏:编译器可能会对未释放的内存发出警告,这可能会导致内存泄漏。

解决这个问题的方法是在使用完内存后及时释放。

三、解决编译错误和警告的方法1. 仔细阅读编译错误和警告信息:编译器通常会提供详细的错误和警告信息,我们应该仔细阅读这些信息,找出问题所在。

C语言编译常见错误提示

C语言编译常见错误提示

C语言编译常见错误提示C语言编译常见错误提示Ambiguous operators need parentheses 不明确的运算需要括号Ambiguous symbol ''xxx'' 不明确的符号Argument list syntax error 参数表语法错误Array bounds missing 丢失数组界限符Array size too large 数组尺寸太大Bad character in parameters 参数中有不适当的字符Bad file name format in include directive 包含命令中文件名格式不正确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 转换时会丢失意义的数Could not find file ''xxx'' 找不到XXX文件Declaration missing ; 说明缺少";"Declaration syntax error 说明中出现语法错误Default outside of switch Default出现在switch语句之外Define directive needs an identifier define命令需要标识符Division by zero 用零作除数Do statement must have while Do语句中需要while部分Enumsyntax error 枚举类型语法错误Enumeration constant syntax error 枚举常数语法错误Error directive: xxx 错误的编译预处理命令xxxError writing output file 写输出文件错误Expression syntax error 表达式语法错误Extra parameter in call 调用时出现多余参数File name too long 文件名太长Function call missing ) 函数调用缺少右括号Function definition out of place 函数定义位置错误Function should return a value 函数必需返回一个值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 typedef symbol 类型定义符号使用不恰当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 需要左值Macro argument syntax error 宏参数语法错误Macro expansion too long 宏的扩展以后太长Mismatched number of parameters in definition 定义中参数个数不匹配Misplaced break 此处不应出现break语句Misplaced continue 此处不应出现continue语句Misplaced decimal point 此处不应出现小数点Misplaced else 此处不应出现elseMust 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 寄存器定址失败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 语句中一个) T oo 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'' 无法建立输出文件xxx Unable to open include file ''xxx'' 无法打开被包含的文件xxx Unable to open input file ''xxx'' 无法打开输入文件xxx Undefined label ''xxx'' 没有定义的标号xxx Undefined structure ''xxx'' 没有定义的结构xxx Undefined symbol ''xxx'' 没有定义的符号xxx Unexpected 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'' 不认识的预处理命令Unreachable 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 结构体的长度为零参考网址:/f?kz=369371298/~jlli/c/c-errors.html/roverlibertine/article/details/1858736 百度在线翻译 谷歌在线翻译C语言错误提示常用词(完善中…)英文中文英文中文addition 加法incorrect 不正确的address 地址initialization, initializer 初始化ambiguous 不明确的,有歧义的input 输入argument 参数invalid 无效的array 数组line 行assign 分配list 列表bit (二进制的)位lvalue 左值(可置于赋值号左边的数据,如变量)bound (数组的)边界macro 宏call 调用(函数)memory 内存character 字符mismatched 不匹配的command 命令misplaced 错位的comment 注释missing 缺少const, constant 常量modify 修改conversion 转换name 名称create 建立(文件等)object 对象decimal 十进制的octal 八进制decimal point 小数点operation,operate 操作declare, declaration 声明out of range 超出范围digit 数字output 输出directive 指令parameter 参数division 除法parenthesis,parentheses 圆括号dot 点pointer 指针duplicate 不唯一的requires 要求enum,enumeration 枚举statement 语句execute 执行(命令,程序)structure 结构体expression 表达式subscripting 下标extra 多余的subtraction 减法file 文件symbol 符号format 格式syntax error 语法错误function 函数type 类型hexadecimal 十六进制undefined 未定义的identifier 标识符unexpected 意外的illegal 非法的unknown 未知的improper 不恰当的value 值incompatible 不相容的。

十大编译错误及解析

十大编译错误及解析

Code has no effect
解析:代码无效;当编译程序发觉一种具有无
效操作符旳语句时,发出此警告。可能是因为 其他错误引起。例如语句“a+b;”对每一种变量 都不起作用,无需操作,且可能引起一种错误。
警告范例1:
#include<stdio.h>
void main()
{
int k; for(k=1,k<5,k++)
警告报错位置
printf("&");
} 会有两个信息:
warning: Code has no effect
error: For statement missing ;
警告范例2:
#include<stdio.h>
void main()
{
int k=3;
k=1/3*k;
警告位置
}
警告原因:1/3肯 定为0,因背面旳
报错位置
Lvalue repuired
Lvalue:左值
Lvalue repuired
解析:赋值祈求;赋值运算符旳左边必须 是一种地址体现式,涉及数值变量、指针变 量、构造引用域、间接指针和数组元素。
错误范例:
void main {
int a; 3=a; }
报错位置
Divided error 或 division by zero
十大编译错误及解析
错误(Error) Statement missing; Declaration syntax error Undefined symbol‘xxx’ Misplaced else Compound statement missing} Redeclaration of“xxx” Constant expression required For statement missing; Too few parameter in call to‘xxx’ Case statement missing: Lvalue repuired Divided error 或 division by zero 警告(warning) Code has no effect 。

编译时的常见错误

编译时的常见错误

一、编译时的常见错误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保留关键字作为标识符, 此时将提示定义了太多数据类型。

7. 将定义变量语句放在了执行语句后面。

此时会提示语法错误。

8. 使用了未定义的变量, 此时屏幕显示:Undefined symbol '<变量名>' in function <函数名>9. 警告错误太多。

C语言程序设计中常见错误分析

C语言程序设计中常见错误分析

C语言程序设计中常见错误分析C语言程序设计中常见错误可以分为语法错误和逻辑错误两类。

语法错误是指程序中违反了C语言语法规则的错误,导致编译器无法正常编译程序;逻辑错误则是指程序在语法上没有错误,但是在逻辑上存在问题,导致程序输出结果与预期不符。

下面是一些常见的语法错误:1. 拼写错误:在C语言中,大小写是敏感的,所以拼写错误可能导致编译错误。

例如,将if写成If或者for写成For都是拼写错误。

2.缺少分号:每条语句的末尾需要加上分号来表示语句的结束,如果忘记了加分号,编译器会报错。

3.括号不匹配:在使用括号时,要确保左右括号是匹配的。

如果括号不匹配,编译器会报错。

4.未声明的变量:在使用变量之前,需要先声明变量。

如果使用了未声明的变量,编译器会报错。

5.使用了错误的数据类型:C语言有多种数据类型,对于每种数据类型,都有相应的格式和操作要求。

如果使用了错误的数据类型,编译器会报错。

此外,还有一些常见的逻辑错误:1.逻辑错误:逻辑错误指的是程序编写的不符合预期的逻辑。

例如,写错了循环条件、条件判断错误、算数错误等。

这种错误可能导致程序运行结果与预期不符,需要仔细检查代码逻辑。

2.边界条件错误:在处理数组、字符串或循环等情况下,常常会出现边界条件错误。

例如,访问数组越界、循环条件判断错误等。

这种错误可能导致程序崩溃或者输出错误的结果。

3.内存泄漏:在动态分配内存时,如果没有正确释放已分配的内存,就会导致内存泄漏。

这种错误会导致程序占用过多的内存资源,可能导致系统崩溃或者运行效率低下。

4.误用指针:指针是C语言中一个重要的概念,但是如果不正确使用指针,可能会导致程序崩溃。

常见的误用指针的错误包括:未初始化指针、对空指针进行操作、访问已释放的内存等。

要解决这些错误,可以采取以下方法:1.仔细检查代码:编写代码后,要仔细检查代码,确保语法正确且逻辑合理。

可以利用编译器提供的调试工具,进行代码调试和单步执行,找出错误所在。

C语言编译错误信息提示

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编译器错误与解决方法

c编译器错误与解决方法keil c编译器错误与解决方法小提示:按Ctrl+F键可以直接查找: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 OVERLAYPROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms( )函数或利用条件编译#if …..#endif,可保留该函数并不编译6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAP FROM : 0025HTO: 0025H说明外部资料ROM 的0025H 重复定义地址解决方法外部资料ROM 的定义如下Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它7 WARNING 206:’DelayX1ms’: miss ing function-prototype C:\8051\INPUT.CError 267 :’DelayX1ms ‘:requires ANSI-style prototypeC:\8051\INPUT.C 说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决方法编写DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调用8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL SYMBOL: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 OVERFLOW SPACE: 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?MAIN CALLER2: ?C_C51STARTUP ***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?_SPI_SEND_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。

16种C语言编译警告(Warning)类型的解决方法

16种C语言编译警告(Warning)类型的解决方法

16种C语⾔编译警告(Warning)类型的解决⽅法当编译程序发现程序中某个地⽅有疑问,可能有问题时就会给出⼀个警告信息。

警告信息可能意味着程序中隐含的⼤错误,也可能确实没有问题。

对于警告的正确处理⽅式应该是:尽可能地消除之。

对于编译程序给出的每个警告都应该仔细分析,看看是否真的有问题。

只有那些确实⽆问题的警告才能放下不管。

说明:由于编译的警告各种各样,根本不可以⼀⼀罗列出来,下⾯只是列举出⽐较典型的⼀些警告,还有⼀些警告,⼤家只要根据字⾯意思,就可以很快的查找出来,并解决之。

类型1:显⽰:warning: implicit declaration of function 'Example()'。

警告原因:在你的.c⽂件中调⽤了函数Example(),可是你并没有把声明这个函数的相应的.h⽂件包含进来。

有可能你在⼀个.c⽂件中定义了这个函数体,但并没有在.h中进⾏声明。

解决⽅法:你可以在调⽤这种函数的.c⽂件的⼀开始处加上:extern Example();你可以在调⽤这种函数的.c⽂件中包含进声明了函数Example()的头⽂件。

如果你在⼀个.c⽂件中定义了这个函数体,但并没有在.h中进⾏声明,不嫌⿇烦的话,你也可以去⽣成⼀个.h⽂件,加上你的函数声明。

类似的警告:warning: type mismatch with previous implicit declarationwarning: type mismatch with previous implicit declarationwarning: previous implicit declaration of 'Example()'类型2:显⽰:warning: unused variable 'param'。

警告原因:很明显,是您定义了变量‘param',却根本没有使⽤它。

解决⽅法:不需要⽤的话,就删了它吧。

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 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.1 缺少分号分号是C语言中语句结束的标志,如果未在语句末尾添加分号,编译器会报错。

解决方法是仔细检查代码,确保每个语句的末尾都有分号。

1.2 括号不匹配在C语言中,括号必须成对出现。

如果括号未正确匹配,编译器会报错。

解决方法是仔细检查代码,确保每个左括号都有对应的右括号。

1.3 大小写错误C语言对大小写敏感,因此函数和变量的命名必须与其声明中的大小写完全匹配。

解决方法是检查代码中的命名,并确保其大小写匹配。

1.4 未定义的变量使用未定义的变量会导致编译器报错。

解决方法是确保在使用变量之前先进行声明或定义。

二、逻辑错误逻辑错误在语法上没有问题,但程序的逻辑流程存在缺陷,导致程序运行不符合预期。

以下是一些常见的逻辑错误和解决方法:2.1 数组越界访问在C语言中,数组的索引从0开始。

如果超出数组的索引范围进行访问,会导致程序崩溃或产生意想不到的结果。

解决方法是检查数组索引,并确保它们在合法范围内。

2.2 逻辑运算错误逻辑运算符(如&&、||和!)在C语言中用于组合表达式。

但是,如果这些运算符的使用不当,可能会导致逻辑错误。

解决方法是仔细检查逻辑运算表达式,并确保其符合预期的逻辑规则。

2.3 循环错误循环是C语言中常用的结构之一,但循环中的错误可能导致程序无限循环或不执行循环体。

解决方法是检查循环条件和循环变量,确保它们能正确地控制循环的执行。

三、内存错误内存错误是C语言中常见的错误类型之一。

以下是一些常见的内存错误和解决方法:3.1 内存泄漏内存泄漏指的是在程序中未正确释放分配的内存空间。

C语言编译错误总结

C语言编译错误总结

非常实用的,吸收前辈的经验,我们才能少走弯路。

和C 编译器错误信息中文翻译(1)L15 重复调用***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPICALLER1: ?PR?VSYNC_INTERRUPT?MAINCALLER2: ?C_C51STARTUP该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。

出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一个中断打断,从而使得结果发生变化并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时候都可以被ISR 打断,一段时间后又可以运行,但是相应数据不会丢失)。

原因之二是用于局部变量和变量(暂且这样翻译,arguments,[自变量,变元一数值,用于确定程序或子程序的值])的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的内存区就会被使用,这将导致其他函数的内存冲突。

例如,第一个警告中函数WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51 被定义,它被一个中断服务程序或者一个调用了中断服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C 中。

解决方法:如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁止),并且该函数不占用内存(假设只使用寄存器),则你可以完全忽略这种警告。

如果该函数占用了内存,则应该使用连接器(linker)OVERLAY 指令将函数从覆盖分析(overlayanalysis)中除去,例如:OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *)上面的指令防止了该函数使用的内存区被其他函数覆盖。

VC 6.0编译器错误整理

VC 6.0编译器错误整理

VC 6.0编译器错误整理收藏编程时经常遇到一些编译错误,这些都是我遇到过的,去百度、Google找了半天找到的,现在整理一下,方便以后查找。

统一格式:ID.【错误提示】:编译器提示的错误信息【说明】:产生此错误的根本原因【解决方法】:解决此错误的具体方法1. 【错误提示】: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main【说明】: Windows项目要使用Windows子系统, 而不是Console 【解决方法】:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:console改成/subsystem:windows2. 【错误提示】:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16【说明】:控制台项目要使用Console子系统, 而不是Windows【解决方法】:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:windows改成/subsystem:console3. 【错误提示】:msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16【说明】:通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口【解决方法】:[Project] --> [Settings] --> 选择"C/C++"属性页,在Category中选择Output,再在Entry-point symbol中填入wWinMainCRTStartup, 即可4. 【错误提示】:nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex【说明】:这是因为MFC要使用多线程时库【解决方法】:[Project] --> [Settings] --> 选择"C/C++"属性页,在Category中选择Code Generation,再在Use run-time library中选择Debug Multithreaded 或者multithreaded其中,Single-Threaded 单线程静态链接库(release版本)Multithreaded 多线程静态链接库(release版本)multithreaded DLL 多线程动态链接库(release版本)Debug Single-Threaded 单线程静态链接库(debug版本)Debug Multithreaded 多线程静态链接库(debug版本)Debug Multithreaded DLL 多线程动态链接库(debug版本)单线程: 不需要多线程调用时, 多用在DOS环境下多线程: 可以并发运行静态库: 直接将库与程序Link, 可以脱离MFC库运行动态库: 需要相应的DLL动态库, 程序才能运行release版本: 正式发布时使用debug版本: 调试阶段使用5. 【错误提示】:Compiling... ,Error spawning cl.exe【说明】:这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。

C语言常见错误及解决方法

C语言常见错误及解决方法

C语言常见错误及解决方法C语言是一门非常重要的编程语言,但是在学习和使用过程中,常常会遇到一些错误。

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

在这篇文章中,我将介绍一些C语言常见错误及解决方法,希望对你在学习和使用C语言时能有所帮助。

1.语法错误语法错误是最常见的错误之一,它通常是由错别字、缺少分号、括号不匹配等导致的。

解决这类错误的方法是仔细检查代码,并根据编译器的错误提示进行修改。

2.类型错误类型错误指的是错误地使用了不匹配的数据类型。

比如将整数型赋值给浮点型变量,或者将字符型变量赋值给整型变量等。

解决这类错误的方法是确保变量的数据类型匹配,并进行必要的类型转换。

3.空指针错误空指针错误是指使用了未初始化或已被释放的指针变量。

当你尝试使用这些指针变量时,会导致程序崩溃或产生不可预测的结果。

解决这类错误的方法是在使用指针之前,为其分配内存空间并进行初始化。

4.内存泄漏内存泄漏是指在程序运行过程中,分配的内存空间没有被正确释放。

这会导致内存占用越来越多,最终导致程序崩溃或系统资源不足。

解决这类错误的方法是在不再需要使用一些内存空间时,使用free(函数释放它。

5.数组越界数组越界是指访问数组时超过了其允许的范围。

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

解决这类错误的方法是确保数组的索引在有效范围内,并正确使用循环等控制结构。

6.逻辑错误逻辑错误是指程序的逻辑顺序有误,导致程序无法达到预期的目标。

解决这类错误的方法是仔细分析程序的逻辑流程,并进行必要的修改和调试。

7.死循环死循环是指程序进入一个无法正常退出的循环。

这可能是由于循环条件错误或循环体内没有设置循环终止条件所导致的。

解决这类错误的方法是确保循环条件正确,同时在必要的情况下添加循环终止条件。

8.文件操作错误在进行文件操作时,可能会发生文件打开失败、读写错误等问题。

解决这类错误的方法是检查文件路径是否正确、文件是否存在以及对文件的读写权限等,并根据具体情况进行调整。

C语言技术使用中的常见问题解决方案与解答

C语言技术使用中的常见问题解决方案与解答

C语言技术使用中的常见问题解决方案与解答在学习和使用C语言技术的过程中,我们常常会遇到一些问题,这些问题可能是语法错误、编译错误、逻辑错误等。

本文将探讨一些常见的C语言技术问题,并提供解决方案与解答。

一、语法错误语法错误是我们在编写C语言程序时最常见的问题之一。

当我们违反了C语言的语法规则时,编译器会报错并指出错误的位置。

常见的语法错误包括拼写错误、缺少分号、括号不匹配等。

解决方案:仔细检查代码,确保语法规则的正确性。

可以使用IDE(集成开发环境)来帮助我们检测语法错误,并提供错误提示。

例如,下面的代码中漏掉了一个分号:```c#include <stdio.h>int main() {printf("Hello, world!")return 0;}```编译器会提示错误:`expected ';' before 'return'`。

我们只需在printf语句的末尾添加分号即可解决问题。

二、编译错误编译错误是指在编译过程中出现的错误。

这些错误可能是由于语法错误、链接错误、库文件缺失等引起的。

解决方案:仔细阅读编译器的错误提示信息,根据提示信息来定位错误的位置。

通常,编译器会提供错误的行号和错误的类型,我们可以根据这些信息来找出错误的原因。

例如,下面的代码中使用了一个未声明的变量:```c#include <stdio.h>int main() {int a = 10;printf("The value of b is: %d", b);return 0;}```编译器会提示错误:`‘b’ undeclared (first use in this function)`。

这意味着变量b未被声明。

我们只需在使用变量b之前先声明它即可解决问题。

三、逻辑错误逻辑错误是指程序在运行过程中出现的错误,这些错误通常是由于代码的逻辑错误或算法设计错误引起的。

C++_编译器常见提示错误_相关解析

C++_编译器常见提示错误_相关解析

fatal error C1003:error count exceeds number;stopping compilation中文对照:(编译错误)错误太多,停止编译分析:修改之前的错误,再次编译fatal error C1004:unexpected end of file found中文对照:(编译错误)文件未结束分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“/*…*/”不完整等fatal error C1083:Cannot open include file:'xxx':No such file or directory中文对照:(编译错误)无法打开头文件xxx:没有这个文件或路径分析:头文件不存在、或者头文件拼写错误、或者文件为只读fatal error C1903:unable to recover from previous error(s);stopping compilation中文对照:(编译错误)无法从之前的错误中恢复,停止编译分析:引起错误的原因很多,建议先修改之前的错误error C2001:newline in constant中文对照:(编译错误)常量中创建新行分析:字符串常量多行书写error C2006:#include expected a filename,found'identifier'中文对照:(编译错误)#include命令中需要文件名分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h”error C2007:#define syntax中文对照:(编译错误)#define语法错误分析:例如“#define”后缺少宏名,例如“#define”error C2008:'xxx':unexpected in macro definition中文对照:(编译错误)宏定义时出现了意外的xxx分析:宏定义时宏名与替换串之间应有空格,例如“#define TRUE"1"”error C2009:reuse of macro formal'identifier'中文对照:(编译错误)带参宏的形式参数重复使用分析:宏定义如有参数不能重名,例如“#define s(a,a)(a*a)”中参数a重复error C2010:'character':unexpected in macro formal parameter list中文对照:(编译错误)带参宏的形式参数表中出现未知字符分析:例如“#define s(r|)r*r”中参数多了一个字符‘|’error C2014:preprocessor command must start as first nonwhite space中文对照:(编译错误)预处理命令前面只允许空格分析:每一条预处理命令都应独占一行,不应出现其他非空格字符error C2015:too many characters in constant中文对照:(编译错误)常量中包含多个字符分析:字符型常量的单引号中只能有一个字符,或是以“\”开始的一个转义字符,例如“char error='error';”error C2017:illegal escape sequence中文对照:(编译错误)转义字符非法分析:一般是转义字符位于''或""之外,例如“char error=''\n;”error C2018:unknown character'0xhh'中文对照:(编译错误)未知的字符0xhh分析:一般是输入了中文标点符号,例如“char error='E';”中“;”为中文标点符号error C2019:expected preprocessor directive,found'character'中文对照:(编译错误)期待预处理命令,但有无效字符分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!define TRUE1”error C2021:expected exponent value,not'character'中文对照:(编译错误)期待指数值,不能是字符分析:一般是浮点数的指数表示形式有误,例如123.456Eerror C2039:'identifier1':is not a member of'identifier2'中文对照:(编译错误)标识符1不是标识符2的成员分析:程序错误地调用或引用结构体、共用体、类的成员error C2041:illegal digit'x'for base'n'中文对照:(编译错误)对于n进制来说数字x非法分析:一般是八进制或十六进制数表示错误,例如“int i=081;”语句中数字‘8’不是八进制的基数error C2048:more than one default中文对照:(编译错误)default语句多于一个分析:switch语句中只能有一个default,删去多余的defaulterror C2050:switch expression not integral中文对照:(编译错误)switch表达式不是整型的分析:switch表达式必须是整型(或字符型),例如“switch("a")”中表达式为字符串,这是非法的error C2051:case expression not constant中文对照:(编译错误)case表达式不是常量分析:case表达式应为常量表达式,例如“case"a"”中“"a"”为字符串,这是非法的error C2052:'type':illegal type for case expression中文对照:(编译错误)case表达式类型非法分析:case表达式必须是一个整型常量(包括字符型)error C2057:expected constant expression中文对照:(编译错误)期待常量表达式分析:一般是定义数组时数组长度为变量,例如“int n=10;int a[n];”中n为变量,这是非法的error C2058:constant expression is not integral中文对照:(编译错误)常量表达式不是整数分析:一般是定义数组时数组长度不是整型常量error C2059:syntax error:'xxx'中文对照:(编译错误)‘xxx’语法错误分析:引起错误的原因很多,可能多加或少加了符号xxxerror C2064:term does not evaluate to a function中文对照:(编译错误)无法识别函数语言分析:1、函数参数有误,表达式可能不正确,例如“sqrt(s(s-a)(s-b)(s-c));”中表达式不正确2、变量与函数重名或该标识符不是函数,例如“int i,j;j=i();”中i不是函数error C2065:'xxx':undeclared identifier中文对照:(编译错误)未定义的标识符xxx分析:1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。

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

fatal error C1003:error count exceeds number;stopping compilation中文对照:(编译错误)错误太多,停止编译分析:修改之前的错误,再次编译fatal error C1004:unexpected end of file found中文对照:(编译错误)文件未结束分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“/*…*/”不完整等fatal error C1083:Cannot open include file:'xxx':No such file or directory中文对照:(编译错误)无法打开头文件xxx:没有这个文件或路径分析:头文件不存在、或者头文件拼写错误、或者文件为只读fatal error C1903:unable to recover from previous error(s);stopping compilation中文对照:(编译错误)无法从之前的错误中恢复,停止编译分析:引起错误的原因很多,建议先修改之前的错误error C2001:newline in constant中文对照:(编译错误)常量中创建新行分析:字符串常量多行书写error C2006:#include expected a filename,found'identifier'中文对照:(编译错误)#include命令中需要文件名分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h”error C2007:#define syntax中文对照:(编译错误)#define语法错误分析:例如“#define”后缺少宏名,例如“#define”error C2008:'xxx':unexpected in macro definition中文对照:(编译错误)宏定义时出现了意外的xxx分析:宏定义时宏名与替换串之间应有空格,例如“#define TRUE"1"”error C2009:reuse of macro formal'identifier'中文对照:(编译错误)带参宏的形式参数重复使用分析:宏定义如有参数不能重名,例如“#define s(a,a)(a*a)”中参数a重复error C2010:'character':unexpected in macro formal parameter list中文对照:(编译错误)带参宏的形式参数表中出现未知字符分析:例如“#define s(r|)r*r”中参数多了一个字符‘|’error C2014:preprocessor command must start as first nonwhite space中文对照:(编译错误)预处理命令前面只允许空格分析:每一条预处理命令都应独占一行,不应出现其他非空格字符error C2015:too many characters in constant中文对照:(编译错误)常量中包含多个字符分析:字符型常量的单引号中只能有一个字符,或是以“\”开始的一个转义字符,例如“char error='error';”error C2017:illegal escape sequence中文对照:(编译错误)转义字符非法分析:一般是转义字符位于''或""之外,例如“char error=''\n;”error C2018:unknown character'0xhh'中文对照:(编译错误)未知的字符0xhh分析:一般是输入了中文标点符号,例如“char error='E';”中“;”为中文标点符号error C2019:expected preprocessor directive,found'character'中文对照:(编译错误)期待预处理命令,但有无效字符分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!define TRUE1”error C2021:expected exponent value,not'character'中文对照:(编译错误)期待指数值,不能是字符分析:一般是浮点数的指数表示形式有误,例如123.456Eerror C2039:'identifier1':is not a member of'identifier2'中文对照:(编译错误)标识符1不是标识符2的成员分析:程序错误地调用或引用结构体、共用体、类的成员error C2041:illegal digit'x'for base'n'中文对照:(编译错误)对于n进制来说数字x非法分析:一般是八进制或十六进制数表示错误,例如“int i=081;”语句中数字‘8’不是八进制的基数error C2048:more than one default中文对照:(编译错误)default语句多于一个分析:switch语句中只能有一个default,删去多余的defaulterror C2050:switch expression not integral中文对照:(编译错误)switch表达式不是整型的分析:switch表达式必须是整型(或字符型),例如“switch("a")”中表达式为字符串,这是非法的error C2051:case expression not constant中文对照:(编译错误)case表达式不是常量分析:case表达式应为常量表达式,例如“case"a"”中“"a"”为字符串,这是非法的error C2052:'type':illegal type for case expression中文对照:(编译错误)case表达式类型非法分析:case表达式必须是一个整型常量(包括字符型)error C2057:expected constant expression中文对照:(编译错误)期待常量表达式分析:一般是定义数组时数组长度为变量,例如“int n=10;int a[n];”中n为变量,这是非法的error C2058:constant expression is not integral中文对照:(编译错误)常量表达式不是整数分析:一般是定义数组时数组长度不是整型常量error C2059:syntax error:'xxx'中文对照:(编译错误)‘xxx’语法错误分析:引起错误的原因很多,可能多加或少加了符号xxxerror C2064:term does not evaluate to a function中文对照:(编译错误)无法识别函数语言分析:1、函数参数有误,表达式可能不正确,例如“sqrt(s(s-a)(s-b)(s-c));”中表达式不正确2、变量与函数重名或该标识符不是函数,例如“int i,j;j=i();”中i不是函数error C2065:'xxx':undeclared identifier中文对照:(编译错误)未定义的标识符xxx分析:1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。

error C2078:too many initializers中文对照:(编译错误)初始值过多分析:一般是数组初始化时初始值的个数大于数组长度,例如“int b[2]={1,2,3};”error C2082:redefinition of formal parameter'xxx'中文对照:(编译错误)重复定义形式参数xxx分析:函数首部中的形式参数不能在函数体中再次被定义error C2084:function'xxx'already has a body中文对照:(编译错误)已定义函数xxx分析:在VC++早期版本中函数不能重名,6.0版本中支持函数的重载,函数名可以相同但参数不一样error C2086:'xxx':redefinition中文对照:(编译错误)标识符xxx重定义分析:变量名、数组名重名error C2087:'<Unknown>':missing subscript中文对照:(编译错误)下标未知分析:一般是定义二维数组时未指定第二维的长度,例如“int a[3][];”error C2100:illegal indirection中文对照:(编译错误)非法的间接访问运算符“*”分析:对非指针变量使用“*”运算error C2105:'operator'needs l-value中文对照:(编译错误)操作符需要左值分析:例如“(a+b)++;”语句,“++”运算符无效error C2106:'operator':left operand must be l-value中文对照:(编译错误)操作符的左操作数必须是左值分析:例如“a+b=1;”语句,“=”运算符左值必须为变量,不能是表达式error C2110:cannot add two pointers中文对照:(编译错误)两个指针量不能相加分析:例如“int*pa,*pb,*a;a=pa+pb;”中两个指针变量不能进行“+”运算error C2117:'xxx':array bounds overflow中文对照:(编译错误)数组xxx边界溢出分析:一般是字符数组初始化时字符串长度大于字符数组长度,例如“char str[4]="abcd";”error C2118:negative subscript or subscript is too large中文对照:(编译错误)下标为负或下标太大分析:一般是定义数组或引用数组元素时下标不正确error C2124:divide or mod by zero中文对照:(编译错误)被零除或对0求余分析:例如“int i=1/0;”除数为0error C2133:'xxx':unknown size中文对照:(编译错误)数组xxx长度未知分析:一般是定义数组时未初始化也未指定数组长度,例如“int a[];”error C2137:empty character constant。

相关文档
最新文档