VC6.0常见编译错误提示附解决方法

这篇文章主要介绍了VC++6.0编译过程中常遇到的一些错误提示并给出了错误原因与分析,需要的朋友尅参考下
 

(1)error C2001: newline in constant

编号:C2001
直译:在常量中出现了换行。
错误分析:
1.①字符串常量、字符常量中是否有换行。
2.②在这句语句中,某个字符串常量的尾部是否漏掉了双引号。
3.③在这语句中,某个字符创常量中是否出现了双引号字符“"”,但是没有使用转义符“"”。
4.④在这句语句中,某个字符常量的尾部是否漏掉了单引号。
5.⑤是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。

(2)error C2015: too many characters in constant

编号:C2015
直译:字符常量中的字符太多了。
错误分析:
单引号表示字符型常量。一般的,单引号中必须有且只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。
另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:
if (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)。
错误分析:
如果某个数字常量以“0”开头(单纯的数字0除外),那么编译器会认为这是一个8进制数字。例如:“089”、“078”、“093”都是非法的,而“071”是合法的,等同于是进制中的“57”。

(6)error C2065: 'xxxx' : undeclared identifier

编号:C2065
直译:标识符“xxxx”未定义。
错误分析:
首先,解释一下什么是标识符。标志符是程序中出现的除关键字 之外的词,通常由字母、数字和下划线组成,不能以数字开头,不能与关键字重复,并且区分大小写。变量名、函数名、类名、常量名等等,都是标志符。所有的标 志符都必须先定义,后使用。标志符有很多种用途,所以错误也有很多种原因。

1.如果“xxxx”是一个变量名,那么通常是程序员忘记了定义这个变量,或者拼写错误、大小写错误所引起的,所以,首先检查变量名是否正确。(关联:变量,变量定义)
2.如果“xxxx”是一个函数名,那就怀疑函数名是否没有定义。可能是拼写错误或大小写错误,当然,也有可能是你所调用的函数根本不存在。还有一种可能,你写的函数在你调用所在的函数之后,而你有没有在调用之前对函数原形进行申明。(关联:函数申明与定义,函数原型)
3. 如果“xxxx”是一个库函数的函数名,比如“sqrt”、“fabs”,那么看看你在cpp文件已开始是否包含了这些库函数所在的头文件(.h文件)。 例如,使用“sqrt”函数需要头文件math.h。如果“xxxx”就是“cin”或“cout”,那么一般是没有包含“iostream.h”。(关 联:#include,cin,cout)
4.如果“xxxx”是一个类名,那么表示这个类没有定义,可能性依然是:根本没有定义这个类,或者拼写错误,或者大小写错误,或者缺少头文件,或者类的使用在申明之前。(关联:类,类定义)
5.标志符遵循先申明后使用原则。所以,无论是变量、函数名、类名,都必须先定义,后使用。如使用在前,申明在后,就会引发这个错误。
6.C++的作用域也会成为引发这个错误的陷阱。在花括号之内变量,是不能在这个花括号之外使用的。类、函数、if、do(while)、for所引起的花括号都遵循这个规则。(关联:作用域)
7.前面某句语句的错误也可能导致编译器误认为这一句有错。如果你前面的变量定义语句有错误,编译器在后面的编译中会认为该变量从来没有定义过,以致后面所有使用这个变量的语句都报这个错误。如果函数申明语句有错误,那么将会引发同样的问题。

(7)error C2086: 'xxxx' : redefinition

编号:C2374
直译:“xxxx”重复申明。
错误分析:
变量“xxxx”在同一作用域中定义了多次。检查“xxxx”的每一次定义,只保留一个,或者更改变量名。

(8)error C2374: 'xxxx' : redefinition; multiple initialization

编号:C2374
直译:“xxxx”重复申明,多次初始化。
错误分析:
变量“xxxx”在同一作用域中定义了多次,并且进行了多次初始化。检查“xxxx”的每一次定义,只保留一个,或者更改变量名。

(9)C2143: syntax error : missing ';' before (identifier) 'xxxx'

编号:C2143
直译:在(标志符)“xxxx”前缺少分号。
错误分析:
这是VC6的编译期最常见的误报,当出现这个错误时,往往所指的语句并没有错误,而是它的上一句语句发生了错误。其实,更合适的做法是编译器报告在上一句语句的尾部缺少分号。上一句语句的很多种错误都会导致编译器报出这个错误:

1.上一句语句的末尾真的缺少分号。那么补上就可以了。
2.上一句语句不完整,或者有明显的语法错误,或者根本不能算上一句语句(有时候是无意中按到键盘所致)。
3.如果发现发生错误的语句是cpp文件的第一行语句,在本文件中检查没有错误,但其使用双引号包含了某个头文件,那么检查这个头文件,在这个头文件的尾部可能有错误。

(10)error C4716: 'xxx' : must return a value

编号:C4716
直译:“xxx”必须返回一个值。
错误分析:
函数声明了有返回值(不为void),但函数实现中忘记了return 返回值。要么函数确实没有返回值,则修改其返回值类型为void,要么在函数结束前返回合适的值。

(11) warning C4508: 'main' : function should return a value; 'void' return type assumed

编号:C4508
直译:main函数应该返回一个值;void返回值类型被假定。
错误分析:

1.函数应该有返回值,声明函数时应指明返回值的类型,确实无返回值的,应将函数返回值声明为void。若未声明函数返回值的类型,则系统默认为整 型int。此处的错误估计是在main函数中没有return返回值语句,而main函数要么没有声明其返回值的类型,要么声明了。
2.warning类型的错误为警告性质的错误,其意思是并不一定有错,程序仍可以被成功编译、链接,但可能有问题、有风险。

(12)warning C4700: local variable 'xxx' used without having been initialized

编号:C4700
直译:警告局部变量“xxx”在使用前没有被初始化。
错误分析:
这是初学者常见的错误,例如以下程序段就 会造成这样的警告,而且程序的确有问题,应加以修改,尽管编译、链接可以成功——若不修改,x的值到底是多少无法确定,是随机的,判断其是否与3相同没有 意义,在运气不好的情况下,可能在调试程序的机器上运行时,结果看起来是对的,但更换计算机后再运行,结果就不对,初学者往往感到迷惑。
int x;
if (x==3) printf("hello");

时间: 2024-08-02 21:00:31

VC6.0常见编译错误提示附解决方法的相关文章

VC6.0常见编译错误提示附解决方法_C 语言

(1)error C2001: newline in constant 编号:C2001直译:在常量中出现了换行.错误分析: 1.①字符串常量.字符常量中是否有换行.2.②在这句语句中,某个字符串常量的尾部是否漏掉了双引号.3.③在这语句中,某个字符创常量中是否出现了双引号字符""",但是没有使用转义符"\"".4.④在这句语句中,某个字符常量的尾部是否漏掉了单引号.5.⑤是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号. (2)er

电脑开机常见的错误提示以及解决办法大全

在启动Windows 9x之前有字符提示的错误,属于非关键性的错误,它并不会导致整个硬件系统报废,屏幕有显示说明这台机器还有药可救.但是这是一类很严重的错误,如果不加以排除,系统往往不能正常启动.在下面为大家列出了电脑开机常见的错误提示以及解决办法大全,希望能够帮助到大家. 错误信息CH-2 Time ERROR 是主板时钟TIME #2发生错误时的出现的提示信息通常须更换主板 错误信息CMOS Battery State L0W 系统中有一个用于存放CMOS参数的电池该提示的意思是该电池已用完

八种常见Excel错误提示及问题解决方法

  八种常见Excel错误提示及问题解决方法          1.#####! 原因:如果单元格所含的数字.日期或时间比单元格宽,或者单元格的日期时间公式产生了一个负值,就会产生#####!错误. 解决方法:如果单元格所含的数字.日期或时间比单元格宽,可以通过拖动列表之间的宽度来修改列宽.如果使用的是1900年的日期系统,那么Excel中的日期和时间必须为正值,用较早的日期或者时间值减去较晚的日期或者时间值就会导致#####!错误.如果公式正确,也可以将单元格的格式改为非日期和时间型来显示该值

使用u盘时弹出错误提示0x80070570解决方法

  使用u盘时弹出错误提示0x80070570解决方法来啦~相信很多朋友在使用U盘都遇到了错误提示0x80070570,遇到这情况该怎么解决呢?下文小编就为大家带来使用u盘时弹出错误提示0x80070570的解决方法,一起去了解下吧. 使用u盘时弹出错误提示0x80070570解决方法: 1.先检查u盘是否能够正常被电脑识别到,如果可以识别到那么再确认u盘中的文件数据是否重要,如果不重要,那么重新格式化u盘即可解决问题; 2.如果u盘中有重要文件时那么再尝试使用下面的操作解决问题: ①.将鼠标移

win7电脑开机后显示CPU Fan Error错误提示的解决方法

win7电脑开机后显示CPU Fan Error错误提示的解决方法 方法一: 如果出现CPU风扇接线接错的情况会导致出现CPU Fan Error提示,打开机箱检查CPU风扇是否连接到主板对应的接口即可. 方法二: 开机后就按下DEL键进入BIOS,进入POWER的Hardware Monitor,将CPU FAN SPEED项改成IGNORED,CHASSIS FANSPEED项改成N/A,POWER FAN SPEED项改成IGNORED,然后看是否还会出现错误提示. 方法三: 或者是由于一

发生"指定的初始化向量(IV)与此算法的块大小不匹配"错误提示的解决方法

问题描述 那位大侠能解答,调试代码过程中发生"指定的初始化向量(IV)与此算法的块大小不匹配"错误提示的解决方法,谢谢! 解决方案 解决方案二:遇到同样问题....解决方案三:IV的字节数必须等于SymmetricAlgorithm.BlockSize/8

BIOS常见的错误信息和解决方法

计算机用久了,就会出现一些问题,例如计算机一开机就出出现很多英文字母,怎么办?下面三联网教大家计算机BIOS常见错误信息和解决方法. BIOS常见错误信息和解决方法如下: 1.CMOS battery failed(CMOS电池失效) 原因:说明CMOS电池的电力已经不足,请更换新的电池. 2.CMOS check sum error-Defaults loaded(CMOS执行全部检查时发现错误,因此载入预设的系统设定值) 原因:通常发生这种状况都是因为电池电力不足所造成,所以不妨先换个电池试

VC6.0常见链接错误与解决方法

这篇文章主要介绍了VC6.0开发中一些常见链接错误的解决方法,需要的朋友可以参考下   (1)error LNK2001: unresolved external symbol _main 编号:LNK2001 直译:未解决的外部符号:_main. 错误分析:缺少main函数.看看main的拼写或大小写是否正确. (2)error LNK2005: _main already defined in xxxx.obj 编号:LNK2005 直译:_main已经存在于xxxx.obj中了. 错误分析

MySQL常见错误提示及解决方法

130 :文件格式不正确.(还不是很清楚错误的状况) 145 :文件无法打开. 1005:创建表失败. 1006:创建数据库失败. 1007:数据库已存在,创建数据库失败. 1008:数据库不存在,删除数据库失败. 1009:不能删除数据库文件导致删除数据库失败. 1010:不能删除数据目录导致删除数据库失败. 1011:删除数据库文件失败. 1012:不能读取系统表中的记录. 1016:文件无法打开,使用后台修复或者使用 phpmyadmin 进行修复. Quote: 开始=>所有程序=>附