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编译常见错误和警告处理

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 常见的编译警告与错误〔按字母顺序排列〕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语言开发中,常常会遇到各种错误和bug。
本文将介绍一些常见的C语言错误,并提供一些调试攻略,帮助您更好地解决问题。
1. 语法错误语法错误是最常见的错误之一。
在编写C语言代码时,一不小心就可能犯下语法错误,比如拼写错误、遗漏分号等。
这些错误会导致编译器无法正常解析代码,进而产生编译错误。
如何调试:- 仔细检查代码,查找可能的拼写错误。
可以借助IDE(集成开发环境)的自动补全功能来减少此类错误的发生。
- 确保每行代码以分号结尾,没有遗漏。
有些IDE会自动提示此类错误。
2. 逻辑错误逻辑错误是另一类常见的错误。
它们会导致程序在运行时不符合预期,输出错误的结果。
如何调试:- 借助调试工具,例如GDB,在代码执行过程中逐步跟踪程序。
通过查看变量的值和程序的执行流程,可以找出逻辑错误的所在。
- 使用断言(assert)来验证程序逻辑。
通过在关键位置插入断言语句,可以在程序运行时检查是否满足特定条件,从而尽早发现错误。
3. 数组越界错误在C语言中,访问数组时要确保不超出其合法索引范围。
如果越界访问数组,会导致内存访问错误,甚至程序崩溃。
如何调试:- 注意数组的索引范围,确保不超过数组长度。
可以使用循环和条件判断来避免越界访问。
- 配置编译器警告级别,以便在编译时发现可能的数组越界问题。
4. 内存泄漏内存泄漏指程序在分配内存后未释放,造成内存资源浪费的情况。
如果程序中存在内存泄漏,长时间运行可能会导致系统资源不足。
如何调试:- 使用内存调试工具,例如Valgrind,可以检测出内存泄漏情况,并指出泄漏的内存地址。
- 确保在每次动态分配内存后都要相应地释放。
5. 类型错误在C语言中,不同数据类型之间的转换需要谨慎处理。
类型错误可能导致数据丢失或计算结果不准确。
如何调试:- 确保不同数据类型之间进行转换时,能够正确保留数据的精度和范围。
- 使用类型转换符号来明确指定转换的类型,避免隐式转换导致的错误。
如何解决C语言中的编译错误与警告

如何解决C语言中的编译错误与警告C语言是一种广泛应用于系统编程和嵌入式开发的编程语言,它的编译过程中常常会出现各种错误和警告。
这些错误和警告可能会导致程序无法正确编译或者在运行时出现问题。
因此,解决C语言中的编译错误与警告是每个程序员都需要掌握的重要技能。
本文将介绍一些常见的编译错误和警告,并提供一些解决方法。
一、理解编译错误和警告的含义在解决编译错误和警告之前,我们首先需要理解它们的含义。
编译错误是指在编译过程中发现的语法错误或者逻辑错误,这些错误会导致程序无法正确编译。
编译警告是指在编译过程中发现的一些潜在的问题,虽然不会导致程序无法编译,但可能会导致程序在运行时出现问题。
二、常见的编译错误和警告1. 语法错误:语法错误是最常见的编译错误之一,它通常是由于编程人员在编写代码时遗漏了分号、括号不匹配等导致的。
解决语法错误的方法是仔细检查代码,确保语法正确。
2. 未声明的标识符:当使用一个未声明的标识符时,编译器会报错。
解决这个问题的方法是在使用标识符之前先进行声明或者引入相应的头文件。
3. 类型不匹配:类型不匹配是指在赋值或者函数调用过程中,变量的类型与期望的类型不一致。
解决这个问题的方法是检查变量的类型,并进行相应的类型转换。
4. 未使用的变量:编译器会对未使用的变量发出警告,这可能是由于代码中存在一些无用的变量。
解决这个问题的方法是删除未使用的变量或者对其进行使用。
5. 未初始化的变量:未初始化的变量可能导致程序在运行时出现未定义的行为。
解决这个问题的方法是在使用变量之前先进行初始化。
6. 函数返回值不匹配:函数的返回值类型与函数定义时声明的返回值类型不一致会导致编译错误。
解决这个问题的方法是检查函数的返回值类型,并进行相应的修改。
7. 潜在的内存泄漏:编译器可能会对未释放的内存发出警告,这可能会导致内存泄漏。
解决这个问题的方法是在使用完内存后及时释放。
三、解决编译错误和警告的方法1. 仔细阅读编译错误和警告信息:编译器通常会提供详细的错误和警告信息,我们应该仔细阅读这些信息,找出问题所在。
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. 警告错误太多。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。