2024年6月6日发(作者:)

附录 A 常见的编译错误信息 VC编译器能提示大量的警告与错误信息。当编译器的信息输

出窗口中提示错误信息时,点击错误信息序号,按下 F1 键,MSDN 马上显示该错误信息

的详细说明。全部错误信息的详细内容在 MSDN 的下列目录中能查找到: Visual C

Documentation Using Visual C Visual C Promgrammer‟s Guide Build Errors 错误是指程序的语

法错误,编译时发现错误将不能进行项目连接操作。警告是指程序中出现了疑似语法问题,

这些问题从语法的角度来说是合法的,不会影响编译,也可以不予理会,继续进行项目连接,

但警告信息通常说明程序有可能存在潜在的问题,会导致程序运行错误,因此,仍应该认真

检查警告有信息提示的问题,找出原因,及时改正。 对同一个语法问题,编译器有时会给

出多条信息,因此,相似的警告与错误信息常常同时出现。但是,警告与错误的数量并不代

表程序问题的严重性。另一方面,警告与错误信息的定位一般只有参考意义,修改时应对前

后语句、前后函数、甚至整个源程序文件都要进行检查。 对于初学编程的人而言,理解开

发工具提示的错误信息还需要掌握一定的计算机专业词汇,即使有的开发工具已作了汉化处

理,但错误信息一般仍以英语显示。不过这些信息的词汇量并不大,只要注意学习,就能很

快掌握。 下面列出部分常见的错误信息,按错误序号排列。需要注意的是,在 VC的错误

提示中,发生在不同程序结构、不同的上下文环境里的相似的错误,可能以不同序号给出提

示。由于篇幅所限,本书只列出按一个序号列出一种提示。 A.1 错误信息

Error C2001:newline in constant串常量没有以双引号结束,或在新的一行中继续定义串常

量。该错误可能由串常量分隔符不完整引起。

Error C2006:include expected a filename found token宏命令include 后缺少文件名。

Error C2011:identifier : type type redefinition标识符identifier已经被定义为类型type。重复

定义类型名identifier。

Error C2012:missing name following lt在宏命令include 中缺少文件名。

Error C2013:missing gt在宏命令include lt文件名gt中缺少右定界符gt。

Error C2015:too many characters in constant字符常量中字符太多。字符常量只能有一个字符,

或以‟‟开头的转义字符。

Error C2017:illegal escape sequence非法的以‟‟开头的字符序列。

Error C2019:expected preprocessor directive found character要求预编译命令。该错误可能是

由于书写预编译命令时漏写了‟‟。

Error C2020:member : class member redefinition重复定义类或结构中的成员。

Error C2022:number : too big for character在一个字符表示中,八进制‟xxx‟数值太大不能转

换为对应的 ASCII 字符。

Error C2023:divide by 0表达式除以 0。 Error C2024:mod by 0表达式中对 0 作模运算。

Error C2025:identifier : enum/struct/union type redefinition标识符identifier已经用作

enum/struct/union 等类型的标识。

Error C2026:string too big trailing characters truncated字符串太长。超过 2048 个字符将被截

去。

Error C2027:use of undefined type identifier类型名identifier未经定义就使用。

Error C2037:left of operator specifies undefined struct/union identifier成员选择运算符 -gt or .

的左侧不是类、结构、联合等类型的变量。

Error C2039:identifier1 : is not a member of identifier2标识符identifier1不是identifier2的成

员分量。 Error C2041:illegal digit character for base number对于数制number而言数字

character是非法字符。如:int num081//八进制的有效数字字符是 07。

Error C2043:illegal break非法使用 break 语句。break 语句只能在 while do while for switch

语句中使用。

Error C2045:identifier : label redefined标号重复定义。 Error C2046:illegal case非法使用

case。case 只能用于 switch 语句中。

Error C2047:illegal default非法使用 default。default 只能用于 switch 语句中。

Error C2048:more than one defaultdefault 多次出现。在 switch 语句中 default 只能有一个。

Error C2049:case value value already used在一个 switch 语句中,同一个 case 的取值多次

出现。

Error C2050:switch expression not integralswitch 表达式的值不是整型。

Error C2051:case expression not constantcase 表达式不是常量表达式。

Error C2052:case expression not integralcase 表达式不是整型常量表达式。

Error C2054:expected to follow identifier在标识符identifier后需要括号。在表达式中有不正

确的运算符可能会引入该错误。

Error C2056:illegal expression非法表达式。

Error C2057:expected constant expression需要常量表达式。

Error C2059:syntax error : token在程序的文本(用token表示)中有语法错误。请检查该文

本前后的内容。

Error C2060:syntax error : end of file found发现文件结束。该错误通常是由缺少分号、右侧

花括号不配对等情况引起。

Error C2061:syntax error : identifier identifier标识符identifier有语法错误。提示该标识符前

后可能有语法问题。

Error C2062:type type unexpected类型名type出现在不该出现的地方,也可能是此处语法所

需的类型已经定义。该错误常常会因漏写分号引起。

Error C2063:identifier : not a function标识符identifier不是函数名。

Error C2064:term does not evaluate to a function不能通过某项计算出函数的地址。可能是调

用的函数不存在。

Error C2065:identifier : undeclared identifier标识符identifier未作说明。 Error C2070:illegal

sizeof operand非法操作数。sizeof 表达式中的操作数既不是类型名,也不是合法表达式。

Error C2071:identifier : illegal storage class变量identifier被说明为非法的存储类别。 Error

C2075:identifier : array initialization needs curly braces数组元素初始化需要使用花括号。

Error C2078:too many initializers初始化参数太多。初始化参数多于被初始化的对象。 Error

C2083:struct/union comparison illegal结构或联合类型的变量进行比较运算是非法的。用户

自定义类型的变量,没有定义比较运算操作,或没有定义与普通类型的转换,一般不能直接

进行比较运算。

Error C2084:function function already has a body函数体重复定义。

Error C2086:identifier : redefinition标识符identifier重复定义。

Error C2087:identifier : missing subscript数组identifier缺少下标。

Error C2088:operator : illegal for class-key类没有定义对运算符operator的重载。

Error C2089:identifier : class-key too large类的规模超过 64K。

Error C2090:function returns array函数返回数组。函数不能返回数组,但可以返回一个指向

数组的指针。

Error C2097:illegal initialization非法初始化操作。如:用一个非常量值初始化变量。

Error C2100:illegal indirection非法的指针操作。

Error C2102:amp requires l-value地址运算符amp需要对左值表达式进行运算。左值表达式

是指能表示一个变量存储位置的表达式,如变量、数组元素等。

Error C2105:operator needs l-value运算符operator需要左值操作数。