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需要左值操作数。
发布评论