2024年2月20日发(作者:)

编译器错误C2001错误消息

常数中有换行符

字符串常数不能继续到第二行,除非进行下列操作:

•用反斜杠结束第一行。

・用一个双引号结束第一行上的字符串,并在下一行用另一个双引号开始

该字符串。

用n结束第一行是不够的。

编译器错误C2002错误消息

无效的宽字符常数

多字节字符常数是非法的。

通过检查下面的可能原因进行修复

1 .宽字符常数包含的字节比需要的多。

2 .未包括标准头文件STDDEF.h。

3 .宽字符不能与一般字符串连接。

4 .宽字符常数之前必须是字符“L”:

编译器错误C2003错误消息

应输入'(6行口6~ id”

标识符必须跟在预处理器关键字之后。

编译器错误C2004错误消息

应为 “defined(id)”

标识符必须出现在预处理器关键字之后的括号中。

也可能由于为Visual Studio .NET 2003进行的编译器一致性工作生 成此错误:在预处理器指令中缺少括号。

如果预处理器指令缺少右括号,则编译器将生成一个错误。

编译器错误C2005错误消息

#line应跟一个行号,却找到“token”

#line指令后面必须跟行号。

编译器错误C2006错误消息

“directive〃应输入文件名,却找到“token”

诸如#include或#import等指令需要文件名。若要解决该错误, 请确保token是一个有效文件名。并且将该文件名放在双引号或尖括号中。

编译器错误C2007错误消息

#define 语法

#define后未出现标识符。若要解决该错误,请使用标识符。

编译器错误C2008 错误消息

“character”:宏定义中的意外

该字符紧跟在宏名之后。若要解决该错误,宏名之后必须有一个空格。

编译器错误C2009 错误消息

宏形式“identifier〃重复使用

宏定义的形参表多次使用该标识符。宏的参数列表中的标识符必须是唯

一的。

编译器错误C2010 错误消息

“character”:宏形参表中的意外

该字符在宏定义的形参表中使用不正确。移除该字符以解决该错误。

编译器错误C2011 错误消息

“identifier”:“type” 类型重定义

该标识符已定义为type类型。如果多次将某个类型库导入同一个文 件,也可能生成C2011。

编译器错误C2012 错误消息

在“<”之后缺少名称

#include指令缺少所需的文件名。

编译器错误C2013 错误消息

缺少“>”

#include指令缺少右尖括号。添加右尖括号以解决该错误。

编译器错误C2014 错误消息

预处理器命令必须作为第一个非空白空间启动

预处理器指令的#符号必须是非空白行上的第一个字符。

编译器错误C2015 错误消息

常数中的字符太多

一个字符常数包含的字符多于两个。标准字符常数只能包含一个字符,

长字符常数只能包含两个字符。

转义序列(如t)将被转换为单个字符。

当使用Microsoft扩展将字符常数转换为整数时,也可能发生

C2015。

编译器错误C2017 错误消息

非法的转义序列

转义序列(如t)出现在字符或字符串常数之外。

当stringize运算符与包括转义序列的字符串一起使用时会发生

C2017。

编译器错误C2018 错误消息

未知字符“hexnumber”

源文件包含一个意外的ASCII字符,该字符由其十六进制数标识。若 要解决该错误,请移除该字符。

编译器错误C2019 错误消息

应找到预处理器指令,却找到“character”

该字符跟在#符号的后面,但它不是预处理器指令的第一个字母。

编译器错误C2020 错误消息

“member”:''class”成员重定义

从基类或结构继承的成员被重定义。不能重定义继承成员,除非它在基

类中被声明为virtual。

编译器错误C2021 错误消息

应输入指数值,而非“character”

用作浮点常数的指数的字符是一个无效数字。确保使用的指数在范围之

内。

编译器错误C2022 错误消息

“number":对字符来说太大

字符或字符串常数中跟在反斜杠()后面的八进制数字太大,不能表

示字符。

编译器错误C2026 错误消息

字符串太大,已截断尾部字符

该字符串的长度超过了 16380个单字节字符的**。

连接相邻字符串之前,字符串的长度不能超过16380个单字节字符。

大约为此长度的一半的Unicode字符串也会生成此错误。

编译器错误C2027 错误消息

使用了未定义类型“type”

类型只有经过定义才能使用。若要解决该错误,请确保在引用类型前已

对其进行了完全定义。

有可能声明一个指向已声明但未定义的类型的指针。但是Visual C+ +

不允许引用未定义的类型。

编译器错误C2028 错误消息

结构/联合成员必须在结构/联合中

结构或联合成员必须在结构或联合内部声明。

编译器错误C2030 错误消息

“identifier”:结构/联合成员重定义

结构或联合将同一标识符用于多个成员。

编译器错误C2032 错误消息

“identifier”:函数不能是结构/联合'02戊。2万。口”的成员

该结构或联合中的一个成员函数在C++中允许使用而在C中却不 允许。若要解决该错误,请编译为C++程序或移除该成员函数。

编译器错误C2033 错误消息

“identifier”:位域不能有间接寻址

该位域被声明为指针,这是不允许的。

编译器错误C2034 错误消息

“identifier”:位域类型对于位数太小

该位域声明中位的数目超过了基类型的大小。

编译器错误C2036 错误消息

“identifier”:未知的大小

对identifier的操作需要数据对象的大小,而该大小无法确定。

编译器错误C2039 错误消息

“identifierl":不是“1~6口甘侯「2〃的成员

该代码错误调用或引用了结构、类或联合的成员。

编译器错误C2040 错误消息

“operator”:"identifier1” 与“identifier?”的间接寻址级别不同

涉及该运算符的表达式具有不一致的间接寻址级别。

如果两个操作数都是算术的或都是非算术的(如数组或指针),则不用

更改就可使用它们。如果一个操作数是算术的,而另一个不是,则算术运算符将转换为非算术类

型。

编译器错误C2041 错误消息

非法的数字“character〃(用于基“number”)

指定的字符不是基(如八进制或十六进制)的有效数字。

编译器错误C2042 错误消息

signed/unsigned关键字互相排斥

在单个声明中使用关键字signed和unsigned。

编译器错误C2043 错误消息

非法break

break仅在do、for、while或switch语句中合法。

编译器错误C2044 错误消息

非法 continue

continue仅在do、for或while语句中合法。

编译器错误C2045 错误消息

“identifier”:标签重定义

该标签出现在同一函数中的多条语句之前。

编译器错误C2046 错误消息

非法的case

关键字case只能出现在switch语句中。

编译器错误C2047 错误消息

非法的default

关键字default仅能出现在switch语句中。

编译器错误C2048 错误消息

默认值多于一个

switch语句包含多个default标签。删除其中一个default标签可决该错误。

编译器错误C2050 错误消息

switch表达式不是整型

switch表达式计算结果为一个非整数值。若要解决该错误,请在

switch语句中只使用整数值。

编译器错误C2051 错误消息

case表达式不是常数

Case表达式必须是整数常数。

编译器错误C2052 错误消息

“type”:非法的case表达式类型

Case表达式必须是整数常数。

编译器错误C2053 错误消息

“identifier”:宽字符串不匹配

宽字符串被分配给了一个不兼容的类型。

编译器错误C2054 错误消息

在“1~6田1侯叫之后应输入“(”

该函数标识符用在需要尾部括号的上下文中。

导致该错误的可能原因是省略了复杂初始化上的等号(=)。

编译器错误C2055 错误消息

应输入形参表,而不是类型表

函数定义包含参数类型列表而不包含形参表。ANSI C需要命名的形

参,除非它们是void或是省略号(…)。

编译器错误C2056 错误消息

非法表达式

表达式因前一个错误而无效。

编译器错误C2057 错误消息

应输入常数表达式

上下文要求常数表达式,即其值在编译时已知的表达式。

编译器错误C2058 错误消息

常数表达式不是整型

该上下文需要整数常数表达式。

编译器错误C2059 错误消息

语法错误:“token”

该标记导致语法错误。

若要确定原因,则不仅要检查在错误信息中列出的行,还要检查该行上

面的行。下面的示例对声明j的行生成了错误信息,而该错误的真正源却出现在其上面的行中。

如果对行的检查没有获得有关可能出现的问题的任何线索,则尝试注释

掉在错误信息中列出的行以及可能出现在该行上面的若干行。

如果该错误信息在紧跟typedef变量的符号上出现,则检查该变量是

否已在源代码中定义。

如果符号没有计算出任何结果(在使用/Dsymbo上编译时可能发 生),可能会导致C2059。

可能收到C2059的另一个特定原因是编译在函数的默认参数中指定 了结构的应用程序。参数的默认值必须是一个表达式。初始值设定项列表(如用于初始化结构的

初始值设定项列表)不是表达式。其解决方法是定义一个执行所需初始化的构造函数。

编译器错误C2060 错误消息

语法错误:遇到文件结束

至少还需要一个标记。

编译器错误C2061 错误消息

语法错误:标识符“identifier”

编译器发现了不应在此出现的标识符。请确保在使用identifier之前 对其进行声明。

初始值设定项可能括在了括号中。为避免该问题,请将声明符括在括号 中或使其成为typedef。

在编译器将表达式作为类模板参数检测时也可能导致此错误;使用

typename告诉编译器它是一个类型。

编译器错误C2062 错误消息

意外的类型“type”

编译器不需要类型名称。

编译器处理构造函数的参数列表中未定义类型的方式也可能导致

C2062。如果编译器遇到未定义的(拼错了吗?)类型,则它假定构造函数是一个表达式,并

发出C2062。若要解决此错误,请只使用构造函数参数列表中的定义类型。

编译器错误C2063 错误消息

“identifier”:不是函数

该标识符用作函数,但未声明为函数。

编译器错误C2064 错误消息

项不会计算为接受“number”个参数的函数

通过表达式调用了函数。该表达式未计算为函数指针。

“identifier”:未声明的标识符

在可使用变量的类型前必须在声明中指定它。在可以使用函数前必须在

声明或原型中指定该函数使用的参数。

可能的原因:

1 .您正在用C运行库的调试版本进行编译,在for循环中声明标准 C++库迭代器变量,然后尝试在for循环范围外使用该迭代器变量。用C运行库的调试版 本编译标准C++库代码暗指使用/Zc:forScope。有关更多信息,请参见调试迭代器支持。

2

头文件中的函数。

3

.可能正在调用当前不受生成环境支持的SDK.省略必要的包含文件,尤其是在定义VC EXTRALEAN、

WIN32 LEAN AND MEAN 或 WIN32 EXTRA LEAN 时。这些符号从 windows.h 和 afxv

w32.h中排除了一些头文件以加快编译。(在 windows.h和afxv w32.h中查找排 除的头文件的最新说明。)

4

5

6

.标识符名拼写错误。

.标识符使用了错误的大小写字母。

.字符串常数的后面缺少右引号。

7 .命名空间范围不正确。例如,若要解析ANSI C++标准库函数和运 算符,则必须用using指令指定std命名空间。下面的示例未能编译,因为using指令被注

释掉,并且在std命名空间中定义了 cout:

编译器错误C2066 错误消息

转换到函数类型是非法的

在ANSI C中,函数指针和数据指针间的转换是非法的。

编译器错误C2067 错误消息

转换到数组类型是非法的

对象被转换成了数组类型。

编译器错误C2069 错误消息

“void”项至Devoid”项的强制转换

类型void不能转换成任何其他类型。

编译器错误C2070 错误消息

“type”:非法的sizeof操作数

sizeof运算符需要一个表达式或类型名称。

编译器错误C2071 错误消息

“identifier”:非法的存储类

声明identifier所用的存储类无效。

编译器错误C2072 错误消息

“identifier”:函数的初始化

错误指定了函数初始值设定项。

编译器错误C2073 错误消息

“identifier”:部分初始化数组的元素必须有默认构造函数

为用户定义的类型或常数的数组指定的初始值设定项太少。如果没有为

数组成员指定明确的初始值设定项及其对应的构造函数,则必须提供默认的构造函数。

编译器错误C2074 错误消息

“identifier”:“class-key”初始化需要大括号

在指定的类、结构或联合初始值设定项两边没有大括号。

“identifier”:数组初始化需要大括号

在指定的数组初始值设定项两边没有大括号。

编译器错误C2077 错误消息

非标量字段初始值设定项“identifier” 试图用非标量(结构、联合、数组或类)初始化位域。使用整数值或浮

点值。

编译器错误C2078 错误消息

初始值设定项太多

初始值设定项的数目超过了要初始化的对象数。

编译器错误C2079 错误消息

“identifier”使用未定义的类/结构/联合''name”

指定的标识符是一个未定义的类、结构或联合。

初始化匿名联合时,可能会导致此错误。

编译器错误C2081 错误消息

“identifier”:形参表中的名称非法

标识符导致语法错误。

此错误可能是由使用形参表的旧形式导致的。必须在形参表中指定形参

的类型。

编译器错误C2082 错误消息

形参“identifier”的重定义

在函数体中重新声明了函数的形参。若要解决该错误,请移除该重定

义。

编译器错误C2083 错误消息

结构/联合比较非法

结构或联合直接与另一个用户定义的类型进行比较。这是不允许的,除

非已经定义了比较运算符或者存在到标量类型的转换。

编译器错误C2084 错误消息

函数“function”已有主体

函数已经定义。

在以前的Visual C++版本中,

•编译器将接受解析为同一实际类型的多个模板的专用化,尽管附加的

定义将永远不可用。现在编译器将检测这些多重定义。

•int32和int已被视为单独的类型。编译器现在将 int32作为 int的同义词处理。这意味着,如果函数同时在 int32和int上重载,编译器将检测多个定 义,并提供一个错误。

编译器错误C2085 错误消息

“identifier”:不在形参表中

该标识符在函数定义中声明而未在形参表中声明。(仅用于ANSI C)

编译器错误C2086 错误消息

“identifier”:重定义

多次定义了该标识符,或者后面的声明与前一个不同。

C2086也可能是增量编译引用的C#程序集的结果。重新生成该

C#程序集以解决此错误。

编译器错误C2087 错误消息

“identifier”:缺少下标

具有多个下标的数组的定义缺少大于1的维度的下标值。

编译器错误C2088 错误消息

“operator”:对于“class -卜危丫”非法

没有为结构或联合定义该运算符。该错误只对C代码有效。

编译器错误C2089 错误消息

“identifier”:“class

依丫”太大

指定的结构或联合超过4GB的**。

编译器错误C2090 错误消息

函数返回数组

函数不能返回数组。请返回指向数组的指针。

编译器错误C2091 错误消息

函数返回函数

函数不能返回函数。请返回指向函数的指针。

编译器错误C2092 错误消息

“array name”数组元素类型不能是函数

不允许使用函数数组。请使用指向函数的指针的数组。

编译器错误C2093 错误消息

“variablel”:无法使用自动变量“variable2”的地址初始化

在用/Za编译时,程序试图将自动变量的地址用作初始值设定项。

编译器错误C2094 错误消息

标签“identifier”未定义

goto语句使用的标签在函数中不存在。

编译器错误C2095 错误消息

“function”:实参具有类型“void”:“number”参数

传递给函数的参数为void类型,这是不允许的。请改为使用指向void

的指针(void *)。

number指示哪一个参数为void。

编译器错误C2097 错误消息

非法的初始化

通过检查下面的可能原因进行修复

1 .使用非常数值初始化变量。

2 .用长地址初始化短地址。

3 .在用/Za编译时,用非常数表达式初始化局部结构、联合或数组。

4 .用包含逗号运算符的表达式初始化。

5 .用既非常数又非符号的表达式初始化。

编译器错误C2099 错误消息

初始值设定项不是常数

此错误只由C编译器发出,而且只对非自动变量发生。编译器在程序 的

开头对非自动变量进行初始化,并且用于对这些变量进行初始化的值必须是常数。

由于编译时与运行时的浮点精度环境设置(有关更多信息,请参见

controlfp s)可能不同,因此,编译器无法在/fp:strict下对表达式执行常数合并。在这种 情况下,也可能发生C2099。

当常数合并失败时,编译器调用动态初始化,这在C中是不允许的。

要解决此错误,请将模块编译为.cpp文件或对表达式进行简化。