VC6常见编译错误

合集下载

VC6.0编译错误解决方法集锦

VC6.0编译错误解决方法集锦

VC6.0编译错误解决方法集锦windows编程2010-05-08 21:14:39 阅读83 评论0 字号:大中小订阅VC6.0编译错误解决方法集锦最近打算学习一下网络编程,而大部分socket编程环境都是Unix的,很是不便,在windows中总是不能编译,特寻得一篇文章解决此痒。

爽哉、爽哉!linking... server.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbol server.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbol server.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbolserver.obj : error lnk2001: unresolved external symbol原因和解决办法:找不到相应函数,问题是Link选项里没有加入相应的lib库,winsock要连接wsock32.lib。

第三章 VC++ 6.0常见编译错误

第三章  VC++ 6.0常见编译错误

第三章 VC++ 6.0常见编译错误[错误类型1]error C2143: syntax error : missing ';' before identifier 'scanf'语法错误:在'scanf'之前缺少“;”出错实例: int nscanf(“%d”, &n);[错误类型2]error C2065: 'A' : undeclared identifier标识符A未声明出错实例:int a;scanf(“%d”, &A);[错误类型3]error C2065: 'sqrt' : undeclared identifier标识符sqrt未定义(原因:未包含<math.h>)[错误类型4]error C2296: '%' : illegal, left operand has type 'float'error C2297: '%' :illegal, right operand has type 'float'非法, '%'运算符的左右操作数不是整型出错实例:float a = 10, b = 2;printf(“%d\n”, a % b);[错误类型5]error C2440: '=' : cannot convert from 'char [2]' to 'char'不能将字符串转换成字符出错实例:char ch;ch = “a”;[错误类型6]error C2181: illegal else without matching ifelse子句没有匹配的if[错误类型7]error C2196: case value '1' already usedcase 1: 已经被使用(原因:有相同的case 常量)[错误类型8]error C2078: too many initializers初始化值太多出错实例:int a[5] = {1, 2, 3, 4, 5, 6};[错误类型9]error C2105: '++' needs l-value++运算只能作用于左值(常量不能作左值)出错实例:int a[]= {1, 2, 3, 4, 5};int *pa = ++a; // 数组名是地址常量,不能作左值[错误类型10]error C2117: 'Hello' : array bounds overflow数组边界溢出出错实例:char str[5] = "Hello";[错误类型11]error C4716: 'Function' : must return a value函数Function()必须返回一个值出错实例:int Function(int n) // 函数定义,返回值类型:int 类型 {…………return; // 不返回值,语法错误,应为:return 表达式;}[错误类型12]error C2562: 'Function' : 'void' function returning a value无返回值的函数Function()返回了一个值出错实例:void Function(int n) // 函数定义,无返回值{…………return (n % 10); // 有返回值,语法错误,应为:return;}[错误类型13]error C2447: missing function header (old-style formal list?)缺少函数头出错实例:void Function(int n); // 都是“;”惹的祸{………return;}[错误类型14]error C2082: redefinition of formal parameter 'n'重定义了参数n出错实例:void Function(int n){int m, n; // 局部变量n与参数n同名return;}[错误类型15]error C2601: 'Function' : local function definitions are illegal 函数Function()定义是非法的(原因:出现嵌套定义)[错误类型16]error C2065: 'Function' : undeclared identifier函数Function()未声明(原因:先使用后声明或定义)。

VC6快捷键和常见错误

VC6快捷键和常见错误

VC++6.0快捷键1、检测程序中的括号是否匹配把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。

如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。

2、查看一个宏(或变量、函数)的宏定义把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定,然后就会跳到定义那些东西的地方。

3、格式化一段乱七八糟的源代码选中那段源代码,按A TL+F8。

4、在编辑状态下发现成员变量或函数不能显示删除该项目扩展名为.ncb文件,重新打开该项目。

5、如何整理ClassView视图中大量的类可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了.6、定位预处理指定在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.7、如何添加系统中Lib到当前项目在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib之间用空格格开.8、如何添加系统中的头文件(.h)到当前项目.#include ,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前目录找.9、如何在Studio使用汇编调试在WorkBench的Debugger状态下按CTRL+F7.10、怎样处理ClassZiard找不到的系统消息如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info页中将Message filter改为Window就有了.11、如何干净的删除一个类先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件与.clw文件。

VC6.0常见错误信息分析

VC6.0常见错误信息分析

1.程序开发过程中出现的错误类型我们在进行程序设计时,不可避免地会犯错误。

程序中的错误可以分为三类:编译错误、运行时错误和逻辑错误。

1.1编译错误编译错误(Compile errors)又称为编译时错误(Compiling-time errors): 是由于错误的编码产生的。

例如关键字拼写错误、将中文标点符号当成英文符号使用、遗漏了某些必要的标点符号或者使用了一个没有定义的标识符。

编译错误一般都是语法错误,当编译器对程序进行语法检查时,都能发现这些错误,并能够指出产生错误的位置(标出行号)。

我们可以根据编译出错信息指出的行号找到对应的源代码行改正错误,重新编译源程序。

只有当所有的编译错误被改正后,才能通过编译检查,产生目标代码文件。

改正编译错误的关键是要能正确理解编译器给出的编译错误信息。

VC++环境中的编译、链接错误信息是用英文表示的。

对于英文基础薄弱的读者,可以参考本实验指导书后面的“VC++编译、链接常见错误和警告信息中英文对照”。

通常情况下,一个语法错误可能产生多条编译错误信息,这是由于株连错误造成的,建议读者在处理编译错误时,找到第一个出现错误的位置改正后重新编译。

这样能够避免被株连错误迷惑。

值得指出的是,现在大部分编译器对错误的定位不精确,如果在编译器指出的行没有发现错误,应该向前查找错误。

例如,当提示第10行发生错误时,如果在第10行没有发现错误,请从第10行开始往前查找错误并修改之。

1.2运行时错误运行时错误(Run-time errors)是在程序的运行阶段出现的,当运行环境检测到程序的某些操作无法执行,例如除数为零时,就会出现运行时错误。

当运行环境检测到程序的某些操作是被禁止的,也会产生运行时错误。

例如,访问数组时超越数组的边界,空指针引用(NULL pointer assignment,空指针赋值,即有指针未赋具体地址就使用了)等等。

1.3逻辑错误逻辑错误(Logic errors):当程序没有按照程序员的意图执行时,就表明程序中存在逻辑错误。

VisualBasic 6.0常见错误及解决方案

VisualBasic 6.0常见错误及解决方案

解决方案 ⑴ 关闭不需要的应用程序、文档或资源文件。 ⑵ 将庞大的模块或过程分成几个。 虽然这样不能节省内存空间, 但可避免 64K 段边界 限制。 ⑶ 按增强方式重新启动 Microsoft Windows 。 ⑷ 空出一些磁盘空间以增加虚拟内存,或至少确保有空馀的空间。 ⑸ 减少一些驻留程序。 ⑹ 减少一些不需要的设备驱动程序。 ⑺ 减少 Public 变量的数量。 4. 下标越界(错误 9) 错误原因 只能在定义的范围内访问数组元素和集合成员。
错误分析 ⑴ 引用了不存在的数组元素。 ⑵ 声明数组时没有指定元素的数目。例如,下列的代码就会导致此错误:
2
Dim MyArray() As Integer MyArray(8) = 234 ' 导致错误 9。 ⑶ 引用了不存在的集合成员。 ⑷ 使用速写形式的下标,结果指定了错误的元素。 解决方案 ⑴ 下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指定范围。检查 数组的声明以确认其上界和下界。 若使用的是重新指定范围的数组, 应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。 ⑵ Visual Basic 并不会将没有指定范围的数组自动设为 0 – 10。相反必须使用 Dim 或 ReDim 来指定数组中元素的数目。 ⑶ 试着使用 For Each...Next 结构代替指定元素下标。 ⑷ 例如, 当在集合上使用 ! 运算子时, ! 自动指定了一个键。 例如 object!keyname.value 和 object.item(keyname).value 是一样的。在此例中,集合中如果 keyname 表示一 个错误键,错误就会产生。若要改进此错误,在集合对象中使用正确的键名称或索 引。 5. 数组长度固定或临时被锁定(错误 10) 错误原因 并非所有数组都可重设大小。即使数组声明成动态,或者数组是在 Variant 变量中, 也会被临时锁定。 错误分析 ⑴ 使用 ReDim 来改变固定大小数组的元素数。 例如, 在下列的代码中, 在 NextOne 过 程中 SomeArr 接收了固定大小的数组 FixedArr , 然后试图调整 SomeArr 的大小: Sub FirstOne Dim FixedArr(25) As Integer NextOne FixedArr() End Sub Sub NextOne(SomeArr() As Integer) ReDim SomeArr(35) ... End Sub ⑵ 对模块层次动态数组,要重新确定大小,而某一个元素已经作为参数传给了过程。 例如,在下列的代码中,ModArray 是模块层次动态数组,却将其第 56 个元素以按 引用传给 Test 过程:

VC6_VC6.0编译常见错误第一部分语法错

VC6_VC6.0编译常见错误第一部分语法错

VC6.0编译常见错误第一部分语法错误1、变量没有区分大小写例如:变量X 与x 不同;2、关键字写错例如:void 写成了viod等,cout写成count等3、把英文符号写成了中文符号例如:常见的错误包括单引号、双引号、分号等4、混肴了“=”与“==”的区别5、复合语句没有使用{ }6、把“x>5 && x<9”写成“5<x<9”第二部分编译错误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)整体看待的数字。

两个单引号之间不加任何内容会引发如下错误:error C2137: empty character constant。

3.error C2018: unknown character '0x##'编号:C2018直译:未知字符‘0x##’。

vc++6.0菜单中英文对照附录常见编译错误

vc++6.0菜单中英文对照附录常见编译错误

VC++6.0系统开发环境在Windows 98/2000/XP操作系统中正确安装了Visual C++ 6.0后,可以启动Visual C++6.0系统。

第一次运行时,将显示出“Tip of the Day”对话框,单击“Next”命令按钮,可看到有关各种操作的提示;如果不选中“Show tips at startup”复选框,那么以后运行Visual C++ 6.0时将不再出现此对话框。

单击“Close”命令按钮关闭此对话框,进入Visual C++6.0系统开发环境。

1 开发环境的菜单功能Visual C++6.0开发环境界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口以及状态栏等组成。

在开发环境界面中,可以看到在它的上方排列着一系列菜单,如图1所示,而每一个菜单下都有各自的菜单命令。

在进一步与开发环境打交道之前,先了解各个菜单命令的基本功能是很有必要的,因为大部分的操作都是通过菜单来完成的。

图 1 VC++主菜单栏1. File莱单File菜单中的命令主要用来对文件和项目进行操作,如“新建”、“打开”、“保存”、“打印”等。

其中各项命令的功能描述如表1所示。

表 1 File菜单命令的快捷键及功能描述菜单命令快捷键功能描述New Ctrl+N 创建一个新项目或文件Open Ctrl+O 打开已有的文件Close 关闭当前被打开的文件Open Workspace 打开一个已有的项目Save Workspace 保存当前项目Close Workspace 关闭当前项目Save Ctrl+S 保存当前文件Save As 将当前文件用新文件名保存Save All 保存所有打开的文件Page Setup 文件打印的页设置(续表)菜单命令快捷键功能描述Print Ctrl+P 打印当前文件内容或选定的当前内容Recent Files 选择打开最近的文件Recent Workspace 选择打开最近的项目Exit 退出Visual C++6.0开发环境2. Edit菜单Edit菜单中的命令用来使用户方便快捷地编辑文件内容,如进行删除、复制等操作,其中大多数命令功能与Windows中标准字处理程序的编辑命令一致,各项命令的快捷键及它们的功能描述如表2所示。

VC6编译及链接过程中常见的出错提示

VC6编译及链接过程中常见的出错提示

Visual C++ 6.0编程环境的使用目录4 编译与链接过程中常见的出错提示 (1)4.1编译、链接问题的解决方法 (1)(1)努力读懂VC报告的错误与警告信息 (1)(2)定位问题所在行 (1)(3)解决问题的方法 (1)(4)避免被VC误导 (1)(5)编译链接问题的解决不代表程序正确 (2)4.2常用单词与术语 (2)4.3常见编译错误信息 (4)(1)error C2001: newline in constant (4)(2)error C2017: illegal escape sequence (4)(3)error C2015: too many characters in constant (4)(4)error C2137: empty character constant (5)(5)error C2018: unknown character '0x##' (5)(6)error C2041: illegal digit '#' for base '8' (5)(7)error C2065: 'xxxx' : undeclared identifier (5)(8)error C2086: 'xxxx' : redefinition (6)(9)error C2374: 'xxxx' : redefinition; multiple initialization (6)(10)error C2143: syntax error : missing ';' before (identifier) 'xxxx'或before 'type' (6)(11)error C4716: 'xxx' : must return a value (7)(12)error C2006: #include expected a filename, found '(' / found 'identifier' / found 'newline' (7)(13) error C2039: 'aver' : is not a member of 'STU' (7)(14)error C2043: illegal break (7)(15)error C2046: illegal case / error C2047: illegal default (8)(16)error C2050: switch expression not integral (8)(17)error C2051: case expression not constant (8)(18)error C2079: 'da' uses undefined struct 'data' (8)(19)error C2081: 'num2' : name in formal parameter list illegal (9)(20)error C2122: 'num2' : prototype parameter in name list illegal (9)(21)error C2082: redefinition of formal parameter 'aver' (9)(22)error C2172: 'fread' : actual parameter is not a pointer : parameter 1 (9)(23)error C2198: 'FindMin' : too few actual parameters (10)(24)error C2087: '<Unknown>' : missing subscript (10)(25)error C2133: 'num' : unknown size (10)(26)error C2106: '=' : left operand must be l-value (10)(27)error C2108: subscript is not of integral type (10)(28)error C2109: subscript requires array or pointer type (10)(29)error C2181: illegal else without matching if (11)(30)error C2296: '%' : illegal, left operand has type 'double ' (11)(31)fatal error C1004: unexpected end of file found (11)(32)fatal error C1021: invalid preprocessor command 'defint'/'hinclude' (11)(33)fatal error C1083: Cannot open include file: 'sdtio.h': No such file or directory (11)(34)error C2220: warning treated as error - no object file generated (11)4.4常见编译警告信息 (12)(1)warning C4129: 'm' : unrecognized character escape sequence (12)(2)warning C4508: 'main' : function should return a value; 'void' return type assumed (12)(3)warning C4098: 'change' : 'void' function returning a value (12)(4)warning C4700: local variable 'xxx' used without having been initialized (12)(5)warning C4013: 'print' undefined; assuming extern returning int (13)(6)warning C4047: '=' : 'int *' differs in levels of indirection from 'int ' (13)(7)warning C4024: 'fun' : different types for formal and actual parameter 2 (13)(8)warning C4133: 'function' : incompatible types - from 'int [128]' to 'char *' (13)(9)warning C4022: 'fread' : pointer mismatch for actual parameter 1 (14)(10)warning C4018: '<' : signed/unsigned mismatch (14)(11) warning C4305: '=' : truncation from 'const double ' to 'float ' (15)(12)warning C4553: '==' : operator has no effect; did you intend '='? (15)(13)warning C4715: 'fun' : not all control paths return a value (15)4.5常见链接错误 (16)(1)error LNK2001: unresolved external symbol _main (16)(2)error LNK2005: _main already defined in xxxx.obj (16)(3)fatal error LNK1168: cannot open Debug/P901.exe for writing (17)4.6T URBO C V2.0编译错误信息的英汉对照表 (17)4 编译与链接过程中常见的出错提示4.1 编译、链接问题的解决方法(1)努力读懂VC报告的错误与警告信息编译、链接过程中,主要由于初学和录入阶段的击键失误,VC经常会提示程序有错(语法和拼写问题,肯定不会指明算法有问题,否则就不用编程了)。

在VC++6.0中编译出错时解决方法汇总

在VC++6.0中编译出错时解决方法汇总

在VC++6.0中编译出错时解决方法汇总在VC++6.0中编译出错时解决方法汇总【1】missing function header (old-style formal list?)#SinaEditor_T emp_FontName 解决方法该函数的函数头后边加了分号去掉即可例如:void fun();{}就会出现那种情况【2】在编译VC++6.0是,出现fatal error C1010: unexpected end of file while looking for precompiled header directive 的错误.解决方法:1、如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiled headers。

确定。

2、在文件开头添加:#include "stdafx.h"对预编译头文件说明如下:所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC 标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。

这样可以加快编译速度,节省时间。

预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。

编译器通过一个头文件stdafx.h来使用预编译头文件。

stdafx.h 这个头文件名是可以在project的编译设置里指定的。

编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。

vc6.0中常见错误提示信息

vc6.0中常见错误提示信息

Visual‎ C++常见错误信息‎VC编译出错‎时会指示出程‎序错误的位置‎,鼠标双击出错‎信息行,就可以实现错‎误的定位。

1、fatal error C1083: Cannot‎open includ‎e file: 'R…….h': No such file or direct‎o ry不能打开包含‎文件“R…….h”:没有这样的文‎件或目录。

2、error C2018: unknow‎n charac‎t er '0xa3'不认识的字符‎'0xa3'。

(一般是汉字或‎中文标点符号‎)3. fatal error C1004: unexpe‎c ted end of file found源文件的…{‟‎与…}‟不匹配。

4、error C2057: expect‎e d consta‎n t expres‎s ion希望是常量表‎达式。

(一般出现在s‎wi tch语‎句的case‎分支中)5、error C2065: 'abc' : undecl‎a red identi‎f ier“abc”:标识符没定义‎,有两种可能,一是未定义;二是在引用时‎标识符的名字‎写错了。

6、LINK : fatal error LNK116‎8: cannot‎open Debug/P1.exe for writin‎g连接错误:不能打开P1‎.exe文件,以改写内容。

(一般是P1.Exe还在运‎行,未关闭)7、warnin‎g C4700: local variab‎l e 'bReset‎' used withou‎t having‎been initia‎l ized局部变量“bReset‎”没有初始化就‎使用。

8、 C2001: newlin‎e in consta‎n tThis error is usuall‎y caused‎by a string‎or charac‎t er consta‎n t that is missin‎g its closin‎g ' or " symbol‎9、error C2084: functi‎o n 'void __cdec‎l main(void)' alread‎y has a body在一个源文件‎中定义了两个‎m ain函数‎。

vc6.0编译错误参考

vc6.0编译错误参考

vc6.0编译错误参考Ambiguous operators need parentheses不明确的运算需要用括号括起Ambiguous symbol ``xxx``不明确的符号Argument list syntax error参数表语法错误Array bounds missing丢失数组界限符Array size toolarge数组尺寸太大Bad character in paramenters参数中有不适当的字符Bad file name format in include directive包含命令中文件名格式不正确Bad ifdef directive synatax编译预处理ifdef有语法错Bad undef directive syntax编译预处理undef有语法错Bit field too large位字段太长Call of non-function调用未定义的函数Call to function with no prototype调用函数时没有函数的说明Cannot modify a const object不允许修改常量对象Case outside of switch漏掉了case 语句Case syntax errorCase 语法错误Code has no effect代码不可述不可能执行到Compound statement missing{分程序漏掉"{"Conflicting type modifiers不明确的类型说明符Constant expression required要求常量表达式Constant out of range in comparison在比较中常量超出范围Conversion may lose significant digits转换时会丢失意义的数字Conversion of near pointer not allowed 不允许转换近指针Could not find file ``xxx``找不到XXX文件Declaration missing ;说明缺少";"Declaration syntax error说明中出现语法错误Default outside of switchDefault 出现在switch语句之外Define directive needs an identifier定义编译预处理需要标识符Division by zero用零作除数Do statement must have whileDo-while语句中缺少while部分Enum syntax error枚举类型语法错误Enumeration constant syntax error枚举常数语法错误Error directive :xxx错误的编译预处理命令Error writing output file写输出文件错误Expression syntax error表达式语法错误Extra parameter in call调用时出现多余错误File name too long文件名太长Function call missing函数调用缺少右括号Fuction definition out of place函数定义位置错误Fuction should return a value函数必需返回一个值Goto statement missing labelGoto语句没有标号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 typedefsymbol类型定义符号使用不恰当In-line assembly not allowed不允许使用行间汇编Incompatible storage class存储类别不相容Incompatible type conversion不相容的类型转换Incorrect number format错误的数据格式Incorrect use of defaultDefault使用不当Invalid indirection无效的间接运算Invalid pointer addition指针相加无效Irreducible expression tree无法执行的表达式运算Lvalue required需要逻辑值0或非0值Macro argument syntax error宏参数语法错误Macro expansion too long宏的扩展以后太长Mismatched number of parameters in definition 定义中参数个数不匹配Misplaced break此处不应出现break语句Misplaced continue此处不应出现continue语句Misplaced decimal point此处不应出现小数点Misplaced elif directive不应编译预处理elifMisplaced else此处不应出现elseMisplaced else directive此处不应出现编译预处理else Misplaced endif directive此处不应出现编译预处理endifMust 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寄存器定址失败Repeat count needs an lvalue重复计数需要逻辑值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 casesDefault太多(switch语句中一个)Too 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``无法建立输出文件xxxUnable to open include file ``xxx``无法打开被包含的文件xxxUnable to open input file ``xxx``无法打开输入文件xxxUndefined label ``xxx``没有定义的标号xxxUndefined structure ``xxx``没有定义的结构xxxUndefined symbol ``xxx``没有定义的符号xxxUnexpected 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``不认识的预处理命令xxxUnreachable code无路可达的代码Unterminated string or character constant字符串缺少引号User break用户强行中断了程序V oid functions may not return a valueV oid类型的函数不应有返回值Wrong number of arguments调用函数的参数数目错``xxx`` not an argumentxxx不是参数``xxx`` not part of structurexxx不是结构体的一部分xxx statement missing (xxx语句缺少左括号xxx statement missingxxx语句缺少右括号xxx statement missing ;xxx缺少分号xxx`` declared but never used说明了xxx但没有使用xxx`` is assigned a value which is never used给xxx赋了值但未用过Zero length structure结构体的长度1、fatal error C1010: unexpected end of file while looking for precompiled header directive。

VC6的LNK2005错误

VC6的LNK2005错误

VC6的LNK2005错误使用VC编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。

弄清楚它形成的原因,就可以轻松解决它了。

出现LNK2005错误有多种原因:1.重复定义全局变量。

2.头文件的包含重复。

3.使用第三方的库造成的。

这里只讨论使用第三方的库造成的原因的处理。

如果在程序中同时使用了多个函数库,并且这些函数库中有些函数名称有冲突,就会引起LNK2005错误。

微软提供了两套C运行期函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。

另外一种是支持多线程的:msvcrt.lib。

如果一个工程里,这两种函数库混合使用,可能会引起这个LNK2005错误,一般情况下它需要MFC的库先于普通运行期函数库被连接,因此建议使用支持多线程的 msvcrt.lib。

通常是尽量避免这样混合使用两套函数库(LIBC.lib和MSVCRT.lib)。

如果不得不同时使用两套函数库或者其它相互有冲突的函数库,可以尝试按下面所说的方法:在编译包含zlib库文件的时候,出现以下错误:Linking...MSVCRT.lib(MSVCRT.dll) : error LNK2005: _malloc already defined in LIBCD.lib(dbgheap.obj)MSVCRT.lib(MSVCRT.dll) : error LNK2005: _sprintf already defined in LIBCD.lib(sprintf.obj)MSVCRT.lib(MSVCRT.dll) : error LNK2005: _fclose already defined in LIBCD.lib(fclose.obj)MSVCRT.lib(MSVCRT.dll) : error LNK2005: _free already defined in LIBCD.lib(dbgheap.obj)MSVCRT.lib(MSVCRT.dll) : error LNK2005: __vsnprintf already defined in LIBCD.lib(vsnprint.obj)MSVCRT.lib(MSVCRT.dll) : error LNK2005: _fflush already defined in LIBCD.lib(fflush.obj)LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs; use /NODEFAULTLIB:libraryDebug/Test.exe : fatal error LNK1169: one or more multiply defined symbols found产生的原因是一个函数在两个不同的Lib中都有导出(MSVCRTD 和LIBC有冲突),有两种办法处理:方法一: MSDN对此的解决方法是增加[/FORCE:MULTIPLE]连接选项. 这方式发现会有警告,但可以编译通过:LINK : warning LNK4075: ignoring /INCREMENTAL due to /FORCE specificationMSVCRT.lib(MSVCRT.dll) : warning LNK4006: _malloc already defined in LIBCD.lib(dbgheap.obj); second definition ignored MSVCRT.lib(MSVCRT.dll) : warning LNK4006: _sprintf already defined in LIBCD.lib(sprintf.obj); second definition ignored MSVCRT.lib(MSVCRT.dll) : warning LNK4006: _fclose already defined in LIBCD.lib(fclose.obj); second definition ignored MSVCRT.lib(MSVCRT.dll) : warning LNK4006: _free already defined in LIBCD.lib(dbgheap.obj); second definition ignored MSVCRT.lib(MSVCRT.dll) : warning LNK4006: __vsnprintf already defined in LIBCD.lib(vsnprint.obj); second definition ignoredMSVCRT.lib(MSVCRT.dll) : warning LNK4006: _fflush already defined in LIBCD.lib(fflush.obj); second definition ignoredLINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs; use /NODEFAULTLIB:library方法二:添加链接选项:/NODEFAULTLIB:<library> 如:/nodefaultlib:"libcd.lib" 该方法能编译通过,并且没有警告。

VC++6.0常见编译错误中英文对照表

VC++6.0常见编译错误中英文对照表

VC++6.0常见编译错误中英文对照表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 TRUE 1”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、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。

vc6.0常见错误及分析

vc6.0常见错误及分析

vc6.0常见错误及分析1、fatal error C1010: unexpected end of file while looking for precompiled header directive。

寻找预编译头文件路径时遇到了不该遇到的文件尾。

提示: 一般是在文件最前面没有#include “stdafx.h”2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory不能打开包含文件“R…….h”:没有这样的文件或目录。

提示;这个头文件名字是否正确?在不在相应的目录下面?3、error C2011: 'C……': 'class' type redefinition类“C……”重定义。

提示:这个变量名或者函数定义了两次以上。

4、error C2018: unknown character '0xa3'不认识的字符'0xa3'。

提示:使用了汉字或者中文标点符号5、error C2057: expected constant expression希望是常量表达式。

提示:一般出现在switch 语句的case 分支中,用了变量作为case 条件。

6、error C2065: 'IDD_MYDIALOG' : undeclared identifier“IDD_MYDIALOG”:未声明过的标识符。

提示:变量名或者函数没有定义,检查是否定义过了,或者所定义的变量名和函数名在用的时候是否输入错误。

7、error C2082: redefinition of formal parameter 'bReset'函数参数“bReset”在函数体中重定义。

8、error C2143: syntax error: missing ':' before '{'句法错误:“{”前缺少“;”。

VC 6.0编译器错误整理

VC 6.0编译器错误整理

VC 6.0编译器错误整理收藏编程时经常遇到一些编译错误,这些都是我遇到过的,去百度、Google找了半天找到的,现在整理一下,方便以后查找。

统一格式:ID.【错误提示】:编译器提示的错误信息【说明】:产生此错误的根本原因【解决方法】:解决此错误的具体方法1. 【错误提示】: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main【说明】: Windows项目要使用Windows子系统, 而不是Console 【解决方法】:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:console改成/subsystem:windows2. 【错误提示】:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16【说明】:控制台项目要使用Console子系统, 而不是Windows【解决方法】:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:windows改成/subsystem:console3. 【错误提示】:msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16【说明】:通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口【解决方法】:[Project] --> [Settings] --> 选择"C/C++"属性页,在Category中选择Output,再在Entry-point symbol中填入wWinMainCRTStartup, 即可4. 【错误提示】:nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex【说明】:这是因为MFC要使用多线程时库【解决方法】:[Project] --> [Settings] --> 选择"C/C++"属性页,在Category中选择Code Generation,再在Use run-time library中选择Debug Multithreaded 或者multithreaded其中,Single-Threaded 单线程静态链接库(release版本)Multithreaded 多线程静态链接库(release版本)multithreaded DLL 多线程动态链接库(release版本)Debug Single-Threaded 单线程静态链接库(debug版本)Debug Multithreaded 多线程静态链接库(debug版本)Debug Multithreaded DLL 多线程动态链接库(debug版本)单线程: 不需要多线程调用时, 多用在DOS环境下多线程: 可以并发运行静态库: 直接将库与程序Link, 可以脱离MFC库运行动态库: 需要相应的DLL动态库, 程序才能运行release版本: 正式发布时使用debug版本: 调试阶段使用5. 【错误提示】:Compiling... ,Error spawning cl.exe【说明】:这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。

VC6编译与链接过程中常见的出错提示-推荐下载

VC6编译与链接过程中常见的出错提示-推荐下载

Visual C++ 6.0 编程环境的使用
目录
4 编译与链接过程中常见的出错提示 ....................................................................................................................1 4.1 编译、链接问题的解决方法...........................................................................................................................1 (1)努力读懂VC报告的错误与警告信息...........................................................................................................1 (2)定位问题所在行............................................................................................................................................1 (3)解决问题的方法............................................................................................................................................1 (4)避免被VC误导...............................................
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录VC6.0编译常见错误 (1)第一部分编译错误 (1)1.error C2001: newline in constant (1)2.error C2015: too many characters in constant (2)3.error C2018: unknown character '0x##' (3)4.error C2041: illegal digit '#' for base '8' (3)5.error C2065: 'xxxx' : undeclared identifier (3)6.error C2086: 'xxxx' : redefinition (5)7.error C2374: 'xxxx' : redefinition; multiple initialization (5)8.C2143: syntax error : missing ';' before (identifier) 'xxxx' (5)9.error C2137: empty character constant (6)10.error C2374: 'xxxx' : redefinition; multiple initialization (7)第二部分链接错误 (7)1.error LNK2001: unresolved external symbol _main (7)2.error LNK2005: _main already defined in xxxx.obj (7)VC6.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)整体看待的数字。

两个单引号之间不加任何内容会引发如下错误:error C2137: empty c haracter constant。

3.error C2018: unknown character '0x##'编号:C2018直译:未知字符‘0x##’。

错误分析:0x##是字符ASC码的16进制表示法。

这里说的未知字符,通常是指全角符号、字母、数字,或者直接输入了汉字。

如果全角字符和汉字用双引号包含起来,则成为字符串常量的一部分,是不会引发这个错误的。

4.error C2041: illegal digit '#' for base '8'编号:C2141直译:在八进制中出现了非法的数字‘#’(这个数字#通常是8或者9)。

错误分析:如果某个数字常量以“0”开头(单纯的数字0除外),那么编译器会认为这是一个8进制数字。

例如:“089”、“078”、“093”都是非法的,而“071”是合法的,等同于是进制中的“57”。

5.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)前面某句语句的错误也可能导致编译器误认为这一句有错。

如果你前面的变量定义语句有错误,编译器在后面的编译中会认为该变量从来没有定义过,以致后面所有使用这个变量的语句都报这个错误。

如果函数申明语句有错误,那么将会引发同样的问题。

6.error C2086: 'xxxx' : redefinition编号:C2374 直译:“xxxx”重复申明。

错误分析:变量“xxxx”在同一作用域中定义了多次。

检查“xxxx”的每一次定义,只保留一个,或者更改变量名。

7.error C2374: 'xxxx' : redefinition; multiple initialization 编号:C2374直译:“xxxx”重复申明,多次初始化。

错误分析:变量“xxxx”在同一作用域中定义了多次,并且进行了多次初始化。

检查“xxxx”的每一次定义,只保留一个,或者更改变量名。

8.C2143: syntax error : missing ';' before (identifier) 'xxxx' 编号:C2143直译:在(标志符)“xxxx”前缺少分号。

错误分析:这是VC6的编译期最常见的误报,当出现这个错误时,往往所指的语句并没有错误,而是它的上一句语句发生了错误。

其实,更合适的做法是编译器报告在上一句语句的尾部缺少分号。

上一句语句的很多种错误都会导致编译器报出这个错误:(1)上一句语句的末尾真的缺少分号。

那么补上就可以了。

(2)上一句语句不完整,或者有明显的语法错误,或者根本不能算上一句语句(有时候是无意中按到键盘所致)。

(3)如果发现发生错误的语句是cpp文件的第一行语句,在本文件中检查没有错误,而且这个文件使用双引号包含了某个头文件,那么检查这个头文件,在这个头文件的尾部可能有错误。

9.error C2137: empty character constant编号:C2137直译:空的字符定义。

错误分析:原因是连用了两个单引号,而中间没有任何字符。

一般的,单引号表示字符型常量,单引号中必须有,也只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待)。

两个单引号之间不加任何内容是不允许的。

需要注意的是:如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASC码作为一个整数(int,4B)整体看待的数字。

如果单引号中的字符数多于4个,会引发2015错误:error C2015: to o many characters in constant。

10.error C2374: 'xxxx' : redefinition; multiple initialization 编号:C2374 直译:“xxxx”重复申明,多次初始化。

错误分析:变量“xxxx”在同一作用域中定义了多次,并且进行了多次初始化。

检查“xxxx”的每一次定义,只保留一个,或者更改变量名。

第二部分链接错误1.error LNK2001: unresolved external symbol _main编号:LNK2001直译:未解决的外部符号:_main。

错误分析:缺少main函数。

看看main的拼写或大小写是否正确。

2.error LNK2005: _main already defined in xxxx.obj编号:LNK2005直译:_main已经存在于xxxx.obj中了。

错误分析:直接的原因是该程序中有多个(不止一个)main函数。

这是初学C++的低年级同学在初次编程时经常犯的错误。

这个错误通常不是你在同一个文件中包含有两个main函数,而是在一个project(项目)中包含了多个cpp文件,而每个cpp文件中都有一个main函数。

引发这个错误的过程一般是这样的:你写完成了一个C++程序的调试,接着你准备写第二个C++文件,于是你可能通过右上角的关闭按钮关闭了当前的cpp文件字窗口(或者没有关闭,这一操作不影响最后的结果),然后通过菜单或工具栏创建了一个新的cpp文件,在这个新窗口中,程序编写完成,编译,然后就发生了以上的错误。

原因是这样的:你在创建第二个cpp 文件时,没有关闭原来的项目,所以你无意中新的cpp文件加入你上一个程序所在的项目。

切换到“File View”视图,展开“Source Files”节点,你就会发现有两个文件。

在编写C++程序时,一定要理解什么是Workspace、什么是Project。

相关文档
最新文档