VC++常见错误
- 格式:doc
- 大小:4.43 MB
- 文档页数:21
Visual C++ 2010入门教程作者:董波日期:2010.06.14Baidi Blog:/new/dbfr2011818寻梦不止,学习不止。
天行健,君子以自强不息;地势坤,君子以厚德载物。
organized by denova@2012.05.24写在前面在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫《Visual C++ 2005入门经典》的书帮了我不少的忙。
因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的区别是什么。
现在有很多的朋友应该也有这些问题吧?学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友,特别是学生朋友,告诉他们他们所困惑的问题的答案。
记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序,还自己慢慢的去搜索,好傻啊。
接下来我会做一个《Visual C++ 2010入门教程》系列,用来帮助初学者。
刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的。
内容主要涵盖在Windows下面使用C++进行开发的常见内容,Visual Studio 2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍Visual C++ 2010中新加如的一些内容,包括一些新的STL组建,一些新的语法支持等等。
由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。
注意,本教程非C++教程,不会教你C++,只会教你如何使用 Visual C++ 2010去练习去学习其它C++教材上面的程序。
《Visual C++ 2010入门教程》写在前面在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫《Visual C++ 2005入门经典》的书帮了我不少的忙。
因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC 和C++的区别是什么。
现在有很多的朋友应该也有这些问题吧?学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友,特别是学生朋友,告诉他们他们所困惑的问题的答案。
记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序,还自己慢慢的去搜索,好傻啊.接下来我会做一个《Visual C++ 2010入门教程》系列,用来帮助初学者。
刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的.内容主要涵盖在Windows下面使用C++进行开发的常见内容,Visual Studio 2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍Visual C++ 2010中新加如的一些内容,包括一些新的STL组建,一些新的语法支持等等。
由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。
注意,本教程非C++教程,不会教你C++,只会教你如何使用Visual C++ 2010去练习去学习其它C++教材上面的程序。
因此建议大家认真的去看其他的C++教程,在使用Visual C++ 2010实践的时候如果遇到问题可以到这里来参考。
推荐《C++ Primer》、《C++程序设计语言》《Visual C++ 2008入门经典》。
程序游戏不再出错!Windows常用运行库下载(DirectX、VC++、.Net Framework等)经常听到有朋友抱怨他的电脑运行软件或者游戏时提示缺少什么d3dx9_xx.dll 或msvcp71.dll、msvcr71.dll又或者是 .Net Framework 初始化之类的错误而无法正常使用,其实很多时候,只是因为你的电脑没有安装好这些软件所需要的运行库(又称“运行时”Runtime)而已。
在Windows环境下,很多软件特别是游戏需要依赖一些运行库才能正常使用,而它们很多都是没有集成在Windows里的,需要我们自行安装(所需的运行库一般在软件或游戏的说明里会有提及)。
我们最常见的有DirectX、VC++运行库和.Net Framework等……没有安装好必要的运行库而导致不能运行软件游戏的用户实在太多太多了,我几乎隔两三天就收到一封这样的求助信。
其实,我认为很多这类问题并不是用户太笨,而是微软的错!!为什么?譬如说我安装好一个游戏,没有安装好DirectX(这货几乎是所有3D游戏必备),运行游戏时Windows提示我缺少d3dx9_42.dll ,对于普通用户,马上就傻眼了,我TM谁认识你神马dll文件啊,然后就只能Google一下或求助有经验的朋友了。
然而,如果微软能做得细致一点,将错误提示改成“你丫没有安装DirectX,运行此软件前必须先安装这货,点击这里下载”之类的话儿,不笨的用户都会去下载并安装了。
从这点可以看出,微软很多时候都是没有站在用户的角度去开发产品。
虽然它很多产品技术上很优秀,但正是一些细节的忽略,导致它的产品不够易用,对普通用户来说显得太过复杂太过“专业”。
而隔壁苹果的产品理念则追求简单,将“专业”的东西隐藏起来不需用户去花精力了解学习,这也从一方面看出为什么最近几年苹果崛起得特别快。
当然,这是一个大话题,这里不做更深一层的讨论。
DirectX是微软提供开发人员一个包括3D、声音、网络等多媒体的一个共同的应用程序编程接口,它让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。
1. Warning 280:’i’:unreferenced local variable说明局部变量i 在函数中未作任何的存取操作解决方法消除函数中i 变量的宣告及即定义的参数在程序中并未调用2 Warning 206:’Music3’:missing function-prototype说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣告3Error:318:can’t open file ‘beep.h’说明在编译C:\8051\MANN.C 程序过程中由于main.c 用了指令#i nclude “beep.h”,但却找不到所致解决方法编写一个beep.h 的包含档并存入到c:\8051 的工作目录中4 Error 237:’LedOn’:function already has a body说明LedOn( )函数名称重复定义即有两个以上一样的函数名称解决方法修正其中的一个函数名称使得函数名称都是独立的5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms( )函数或利用条件编译#if …..#endif,可保留该函数并不编译6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAPFROM : 0025HTO: 0025H说明外部资料ROM 的0025H 重复定义地址解决方法外部资料ROM 的定义如下Pdata unsigned charXFR_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它7 WARNING 206:’DelayX1ms’: missing function-prototype C:\8051\INPUT.CError 267 :’DelayX1ms ‘:requires ANSI-style prototypeC:\8051\INPUT.C说明程序中有调用DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决方法编写DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调用8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL SYMBOL:MUSIC3解决办法:1.是文件没有添加到工程里。
D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(25) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(25) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(25) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(25) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(25) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(25) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(26) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(26) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(26) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(26) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(26) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(26) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(27) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(27) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(27) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(27) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(27) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(27) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(28) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(28) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(28) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(28) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(28) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(28) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(29) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(29) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(29) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(29) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(29) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(29) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(30) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(30) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(30) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(30) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(30) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(30) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(31) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(31) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(31) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(31) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(31) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(31) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(32) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(32) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(32) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(32) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(32) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(32) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(33) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(33) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(33) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(33) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(34) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(34) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(34) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(34) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(35) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(35) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(35) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(35) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(35) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(35) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(36) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(36) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(36) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(36) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(36) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(36) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(37) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(37) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(37) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(37) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(37) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(37) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(38) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(38) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(38) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(38) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(38) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(38) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(39) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(39) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(39) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(39) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(39) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(39) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(40) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdio(40) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(18) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(18) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(18) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(18) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(18) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(18) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(20) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(20) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(20) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(20) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(20) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(20) : error C2059: 语法错误: “:”2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(21) : error C2143: 语法错误: 缺少“{”(在“:”的前面)2>D:\Program Files\Microsoft Visual Studio 8\VC\include\cstdlib(21) : fatal error C1003: 错误计数超过100;正在停止编译2>生成日志保存在“file://d:\mutualregistration2\bin\ImageRegistration.dir\Debug\BuildLog.htm”2>ImageRegistration - 102 个错误,个警告解决方案是把.C 改为.CPP文件,在项目—属性——C/C++ 高级中——改为编译为 C++ 代码(/TP)。
VC的工程设置解读Project—SettingsVC工程设置可能会直接影响到工程的正确性,有时是BUG产生的直接原因,在出现莫名其妙的错误,首先应考虑到是否是工程设置有问题,这无论对于开发还是测试,都是很必要的,本文大致介绍一下工程设置选项。
工程选项的快捷建是Alt+F7, 左边的列表可以选择要设置的工程编译方式(Debug或Release),如果多个工程,还可以选择要设置的工程。
右边是一个属性页,内容十分丰富,依次是:General , Debug , C/C++ , Link , Resource , MIDL , Browse Info , Custom Build , Pre-link Step , Post-build step下面主要介绍一下我们常用到的选项:一、General: 设置工程的一般特性,组合框为是否选用MFC静态库,默认为共享的DLL方式,对一些不支持MFC42的机器环境来说,选择静态编译还是有必要的。
底下的两个编辑框表示编译中的文件输出路径。
二、Debug:设置工程调试的选项。
1.Excutable for debug session : 如果是dll的工程,需要指定启动它的exe文件路径,如果是exe工程,默认当前工程。
2.Work directory 设置调试程序的工作路径,默认exe当前路径3.Program arguments 程序启动命令行参数,作控制台程序的时候经常要用三、C/C++ : 这一页内容很多,选择项通过Category(种类)来设置,包括:1.General2.Warning leve 警告级别,VC默认为3,一般不更改3.Optimizations优化级别,DEBUG下设为Disable(Debug),就是不优化,在追求效率或者编译结果的时候可以选择最大速度或最小尺寸的选项,不过微软不保证优化的准确性。
4.Waring as error : 不用多说了,经常忽略警告的人不会选这项吧?5.Generate browse info : 产生浏览信息,在编辑调试加了一些功能,单会产生很大的编译文件,建议不要选。
C语⾔常见错误分析C语⾔常见错误分析:错误分类:语法错、逻辑错、运⾏错。
0.忘记定义变量:main(){x=3;y=6;printf(“%d\n”,x+y);1.C语⾔的变量⼀定要先定义才能使⽤;2.输⼊输出的数据的类型与所⽤格式说明符不⼀致int a=3;float b=4.5;printf(“%f%d\n”,a,b);它们并不是按照赋值的规则进⾏转换(如把4.5转换为4),⽽是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出) 3.未注意int型数据的数值范围int型数据的数值范围(-32768~32768)int num=89101;printf(“%d”,num);会将超过低16位的数截去从⽽得到23563注意:定义了long型,⽽在输出时仍⽤”%d”说明符,仍会出现以上错误4.输⼊变量时忘记使⽤地址符scanf(“%d%d”,a,b);5.输⼊时数据的组织与要求不符对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输⼊6.误把”=“作为”等于”⽐较符“=“为附值运算符“==“为⽐较运算符7.语句后⾯漏分号{t=a;a=b;b=t}它是pascal的语法8.不该加分号的地⽅加了分号if(a>b);printf(“a is larger than b\n”);for(i=0;i<10;i++);scanf(“%d”,&x);printf(“%d\n”,x*x);}9.对应该有花括弧的复合语句,忘记加花括弧sum=0;i=1;while(i<=100)sum=sum+1;i++;10.括弧不配对while((c=getchar()!=‘#’)putchar(c);11.在⽤标识时,忘记了⼤写字母和⼩写字母的区别{int a,b,c;a=2;b=3;C=A+B;printf(“%d+%d=%D”,A,B,C);}12.引⽤数组元素时误⽤发圆括弧{int i,a(10);for(i=0;i<10;i++)scanf(“%d”,&a(i));}13.在定义数组时,将定义的”元素个数”误认为是”可使⽤的最⼤下标值{ int a[10]={1,2,3,4,5,6,7,8,9,10};int i;for(i=1;i<=10;i++)printf(“%d”,a[i]);}14.对⼆维或多维数组的定义和引⽤的⽅法不对{int a[5,4];printf(“%d”,a[1+2,2+2]);…}15.误以为数组名代表数组中全部元素{int a[4]={1,2,3,4};printf(“%d%d%d%d”,a);}16.混淆字符数组与字符指针的区别main(){char str[40];str=“Computer and c”;printf(“%s\n”,str);}17.在引⽤指针变量之前没有对它赋予确定的值{ char *p;scanf(“%s”,p);}{char *p,c[20];p=c;scanf(“%s”,p);}18.switch语句的各分⽀中漏写 break语句混淆字符和字符串的表⽰形式…char sex;sex=“M”;…19.使⽤⾃加(++)和⾃减(--)运算符时出的错误{int *p,a[5]={1,3,5,7,9};p=a;printf(“%d”,*p++);注意于*(++p)的区别;20.所调⽤的函数在调⽤语句之后才定义,⽽⼜在调⽤前未加说明main() {float x,y,z;x=3.5;y=-7.6;z=max(x,y);printf(“%f”,z);}float max(float x,float y){return (x>y?x:y);}21.误认为形参值的改变会影响实参的值swap(int x,int y){int t;t=x;x=y;y=t;}main(){int a,b;a=3;b=4;swap(a,b);printf(“%d,%d\n”,a,b);}22.函数的实参和形参类型不⼀致fun(float x,float y)main(){int a=3,b=4;c=fun(a,b);…}23.不同类的型指针混⽤{int i=3,*p1;float a=1.5,*p2;p1=&i;p2=&a;printf(“%d,%d\n”,*p1,*p2);}24.没有注意函数参数的求值顺序int i=3;prinft(“%d,%d,%d\n”,i,++i,++i);结果为5,5,4因为VC++是采取⾃右⾄左的顺序求函数的值C标准没有具体规定函数参数求值的顺序25.混淆数组名与指针变量的区别{ int i,a[5];for(i=0;i<5;i++)scanf(“%d”,a++);}{int a[5],*p;p=a;for(int i=0;i<5;i++)scanf(“%d”,p++)}{int a[5],*p;for(p=a;pscanf(“%d”,p);}26.混淆结构体类型与结构体变量的区别struct worker{long int num;char name[20];char sex;int age;};worker.num=187045;strcpy(/doc/449e33ccda38376baf1faefa.html ,”ZhangFun”);worker.sex=‘M’;worker.age=18;27.使⽤⽂件时忘记打开,⽤只读⽅式打开,却企图向该⽂件输出数据if(fp=fopen(“test”,”r”))==NULL){printf(“cannot open this file\n”);exit(0);ch=fgetc(fp);while(ch!=‘#’){ch=ch+4;fputc(ch,fp);ch=fgetc(fp);}C语⾔编程常见问题分析1.2.1 参数校验问题在C语⾔的函数中,⼀般都要对函数的参数进⾏校验,但是有些情况下不在函数内进⾏校验,⽽由调⽤者在外部校验,到底什么情况下应该在函数内进⾏校验,什么情况下不需要在函数内进⾏校验呢?下列原则可供读者参考。
C++常见的编译错误中英对应翻译对于刚学编程,刚接触C++的新手来说,编译运行报错是最头疼的一件事,爆出一堆英文,英语差一点的又不知道什么意思,所以也不知道如何去改,在此,我给大家传一份常见错误中英文对照表及简单解释,希望可以帮到大家:fatal error C1003: error count exceeds number; stoppin g compila tion中文对照:(编译错误)错误太多,停止编译分析:修改之前的错误,再次编译fatal error C1004: unexpec ted end of file found中文对照:(编译错误)文件未结束分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“/*…*/”不完整等fatal error C1083: Cannotopen include file: 'xxx': No such file or directo ry中文对照:(编译错误)无法打开头文件x xx:没有这个文件或路径分析:头文件不存在、或者头文件拼写错误、或者文件为只读fatal error C1903: unableto recover from previou s error(s); stoppin g compila tion中文对照:(编译错误)无法从之前的错误中恢复,停止编译分析:引起错误的原因很多,建议先修改之前的错误error C2001: newline in constan t中文对照:(编译错误)常量中创建新行分析:字符串常量多行书写error C2006: #include expecte d a filenam e, found 'identif ier'中文对照:(编译错误)#include命令中需要文件名分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h”error C2007: #definesyntax中文对照:(编译错误)#define语法错误分析:例如“#define”后缺少宏名,例如“#define”error C2008: 'xxx' : unexpec ted in macro definit ion中文对照:(编译错误)宏定义时出现了意外的xxx分析:宏定义时宏名与替换串之间应有空格,例如“#defineTRUE"1"”error C2009: reuse of macro formal'identif ier'中文对照:(编译错误)带参宏的形式参数重复使用分析:宏定义如有参数不能重名,例如“#defines(a,a) (a*a)”中参数a重复error C2010: 'charact er' : unexpec ted in macro formalparamet er list中文对照:(编译错误)带参宏的形式参数表中出现未知字符分析:例如“#defines(r|) r*r”中参数多了一个字符‘|’error C2014: preproc essorcommand must start as first nonwhit e space中文对照:(编译错误)预处理命令前面只允许空格分析:每一条预处理命令都应独占一行,不应出现其他非空格字符error C2015: too many charact ers in constan t中文对照:(编译错误)常量中包含多个字符分析:字符型常量的单引号中只能有一个字符,或是以“\”开始的一个转义字符,例如“char error = 'error';”error C2017: illegal escapesequenc e中文对照:(编译错误)转义字符非法分析:一般是转义字符位于' ' 或" " 之外,例如“char error = ' '\n;”error C2018: unknown charact er '0xhh'中文对照:(编译错误)未知的字符0x hh分析:一般是输入了中文标点符号,例如“char error = 'E';”中“;”为中文标点符号error C2019: expecte d preproc essordirecti ve, found 'charact er'中文对照:(编译错误)期待预处理命令,但有无效字符分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!defineTRUE 1”error C2021: expecte d exponen t value, not 'charact er'中文对照:(编译错误)期待指数值,不能是字符分析:一般是浮点数的指数表示形式有误,例如123.456Eerror C2039: 'identif ier1' : is not a memberof 'identif ier2'中文对照:(编译错误)标识符1不是标识符2的成员分析:程序错误地调用或引用结构体、共用体、类的成员error C2041: illegal digit 'x' for base 'n'中文对照:(编译错误)对于n进制来说数字x非法分析:一般是八进制或十六进制数表示错误,例如“int i = 081;”语句中数字‘8’不是八进制的基数error C2048: more than one default中文对照:(编译错误)default语句多于一个分析:switch语句中只能有一个defau l t,删去多余的de faulterror C2050: switchexpress ion not integra l中文对照:(编译错误)switch表达式不是整型的分析:switch表达式必须是整型(或字符型),例如“switch("a")”中表达式为字符串,这是非法的error C2051: case express ion not constan t中文对照:(编译错误)case表达式不是常量分析:case表达式应为常量表达式,例如“case "a"”中“"a"”为字符串,这是非法的error C2052: 'type' : illegal type for case express ion中文对照:(编译错误)case表达式类型非法分析:case表达式必须是一个整型常量(包括字符型)error C2057: expecte d constan t express ion中文对照:(编译错误)期待常量表达式分析:一般是定义数组时数组长度为变量,例如“int n=10; int a[n];”中n为变量,这是非法的error C2058: constan t express ion is not integra l中文对照:(编译错误)常量表达式不是整数分析:一般是定义数组时数组长度不是整型常量error C2059: syntaxerror : 'xxx'中文对照:(编译错误)‘xxx’语法错误分析:引起错误的原因很多,可能多加或少加了符号xxxerror C2064: term does not evaluat e to a functio n中文对照:(编译错误)无法识别函数语言分析:1、函数参数有误,表达式可能不正确,例如“sqrt(s(s-a)(s-b)(s-c));”中表达式不正确2、变量与函数重名或该标识符不是函数,例如“int i,j; j=i();”中i不是函数error C2065: 'xxx' : undecla red identif ier中文对照:(编译错误)未定义的标识符x xx分析:1、如果xxx为c o ut、cin、scanf、printf、sqrt等,则程序中包含头文件有误2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。
目录VC常见连接错误描述及解决办法 (2)warning LNK4099: PDB 原因及解决方案 (6)Error:Lnk2005调用多个外部链接库时必须使用相同的运行时库(/MT、/MD编译选项,以及可能引起在不同堆中申请、释放内存的问题,l) (8)1、编译选项的位置 (8)2、各个设置选项代表的含义 (8)1、为什么选择/MD,不选/MT? (9)2、为什么选择/MT,不选择/MD? (9)3、多个模块,必须选择相同的运行时库。
(9)VC常见连接错误描述及解决办法1.nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argcnafxcw.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctypenafxcw.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctypenafxcw.lib(dcprev.obj) : error LNK2001: unresolved external symbol __mbctypenafxcw.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype ..\..\Output\Release/FirewallMan.exe : fatal error LNK1120: 3 unresolved externals Error executing link.exe.解决办法:PROJECT->SETING->C/C++->PREPROCESSOR->定义 _AFXDLL,完毕。
第14章VC++6.0集成开发环境使用本章将学习到下列内容:●VC++6.0的安装●VC++6.0拷贝安装方法●VC++6.0的使用●VC++6.0的调试工具●VC++6.0的常见错误C++语言是在C 语言的基础上发展而来,它增加了面向对象的编程,成为当今最流行的一种程序设计语言。
Microsoft Visual C++6.0是微软公司开发的,面向Windows 编程的C++语言工具。
它不仅支持C++语言的编程,也兼容C语言的编程。
由于VC++6.0被广泛地用于各种编程,使用范围很广。
本章简要地介绍如何在VC++6.0下运行C语言程序。
14.1 VC++6.0的安装Microsoft Visual C++ 6.0是一个比较大的软件包,它的安装与Windows下其他应用程序的安装类似。
不过对于学习用的VC++6.0,安装时有时候会出错,导致后续安装不能成功。
当VC安装出现错误时,我们也可以不通过安装,而直接将VC拷贝到硬盘上,然后做相应的设置,即可以达到和安装同样的使用效果。
以下分两方面来介绍VC++6.0的安装。
●利用安装盘安装●直接拷贝14.1.1 利用安装盘安装要使用Visual C++6.0,必须运行windows95以上或windows NT4.0以上的版本(其他配置要求见Visual C++ 6.0文档)。
安装的方式有很多,可以硬盘安装也可以光盘安装,二者区别不大,现以光盘安装为例说明,安装步骤如下(整个安装的过程按提示进行没有特别说明的一路按“下一步”按钮就行;如果在安装的过程出现提示java虚拟机版本不够的情况按提示升级虚拟机版本,重启后会自动安装)。
1.启动光盘,出现如图14.1所示界面表示安装程序启动。
2.接受用户协议,如图14.2所示。
3.输入产品号和用户ID,如图14.3所示。
4.安装选择(一般选自定义),如图14.4所示。
图14.4 安装选项5.选择安装的路径(可以在编辑框中修改,也可以通过”浏览”按钮来定位自己准备安装的位置),如图14.5所示。
keilc语⾔编程常见错误分析(1)1. Warning 280:’i’:unreferenced local variable说明局部变量i 在函数中未作任何的存取操作解决⽅法消除函数中i 变量的宣告及即定义的参数在程序中并未调⽤2 Warning 206:’Music3’:missing function-prototype说明Music3( )函数未作宣告或未作外部宣告所以⽆法给其他函数调⽤解决⽅法将叙述void Music3(void)写在程序的最前端作宣告如果是其他⽂件的函数则要写成extern void Music3(void),即作外部宣告3Error:318:can’t open file ‘beep.h’说明在编译C:\8051\MANN.C 程序过程中由于main.c ⽤了指令#i nclude “beep.h”,但却找不到所致解决⽅法编写⼀个beep.h 的包含档并存⼊到c:\8051 的⼯作⽬录中4 Error 237:’LedOn’:function already has a body说明LedOn( )函数名称重复定义即有两个以上⼀样的函数名称解决⽅法修正其中的⼀个函数名称使得函数名称都是独⽴的5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_DELAYX1MS?DELAY说明DelayX1ms( )函数未被其它函数调⽤也会占⽤程序记忆体空间解决⽅法去掉DelayX1ms( )函数或利⽤条件编译#if…..#endif,可保留该函数并不编译6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAPFROM : 0025HTO: 0025H说明外部资料ROM 的0025H 重复定义地址解决⽅法外部资料ROM 的定义如下Pdata unsigned charXFR_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它7 WARNING 206:’DelayX1ms’: missing function-prototype C:\8051\INPUT.CError 267 :’DelayX1ms ‘:requires ANSI-style prototypeC:\8051\INPUT.C说明程序中有调⽤DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告解决⽅法编写DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调⽤8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOLSYMBOL:MUSIC3解决办法:1.是⽂件没有添加到⼯程⾥。
关于error LNK2001: unresolved external symbol学习VC++时经常会遇到链接错误LNK2001,而一般说来发生连接错误时,编译都已通过。
产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。
产生LNK2001错误的原因:一个是由于编码错误导致的LNK2001,在这不想详细说.另一个由于编译和链接的设置而造成的 LNK2001.最经常发生的是:"LIBCD.lib(wincrt0.obj) :error LNK2001: unresolved external symbol",产生这个错误的原因是没有为wWinMainCRTStartup设定程序入口. 认识这个错误首先在新建工程时要分清Win32Application和Win32 Console Application.它们都是工作在32位Windows环境的程序.其中Win32 Application 就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的.它们都是所谓的GUI(Graphics User Interface图形用户接口),我们可以通过鼠标点击来完成控制。
而Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,或者叫CUI(Character User Interface字符用户接口)。
遇到如下链接错误:Linking... /subsystem:windowsLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol_WinMain@16Debug/TestWin.exe : fatal error LNK1120: 1 unresolved externalsError executing link.exe.解决方法是:将project-settings-link的project options里的/subsystem:windows改成 /subsystem:console因为Win32 Application的入口函数为WinMainWin32 Console Application的入口函数是main也就是说,如果你编写传统的C程序,必须建立Win32 Console程序,但VC里面默认的是Win32 Application,于是上面提及的链接错误就就经常出现了而Win32 Application和Win32 Console的区别就在于VC里链接参数不同另外几种error LNK2001错误:在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol_WinMain@16msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol_WinMain@16nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol__beginthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol__endthreadex下面介绍解决的方法:1. Windows子系统设置错误, 提示:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Windows项目要使用Windows子系统, 而不是Console, 可以这样设置: [Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:console改成/subsystem:windows2. Console子系统设置错误, 提示: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版本: 调试阶段使用分类:(1) vc网络编程中遇到一个编译问题,原来是少了WSOCK32.LIB。
VS编译C语言方法(工程的建立)大家在学习C语言的时候接触的一般都是VC6.0。
但是VC6.0只能编译C或者C++,不支持C#,集成度不是很高。
而且界面并不十分友好,不能自动猜测关键字,函数的参数也不能自动标示。
最关键的是,编译的时候纠错信息是全英文的,对于初学者十分不方便。
在演示编译一些简单的C程序时VC6.0可以胜任,但是在进行稍微复杂的程序编辑工作时,VC6.0就有点力不从心了。
现在微软的基于.NET的开发软件已经更新至Visual Studio 2010(VS2010)但是VS2010版本还不是最完善,所以目前为止,最流行的还是Visual Studio 2008(内部代号VC9.0,以下简称VS2008)。
大家接触VS2008一般都是从C#或者VB语言开始的,其实VS2008作为一款集成度很高的编译软件,其本身也是支持C语言的。
大家可以用它来进行C语言的编译。
相较于VC6.0,VS2008更加的智能,更加人性化。
而且VS2008还支持windows7(VC6.0不支持),所以很多装了windows7的朋友就不用头疼了。
下面,就向大家啊演示如何使用VS2008编译C程序,本文中使用VS2008 professional版本。
1.打开VS2008,这就不用多说了吧2.打开了VS2008的主界面,然后选择,文件→新建→项目弹出如图对话框在项目类型中选择VC++→win32 然后在右侧模板中选择win32控制台应用程序,再在下面输入一个名称(项目名称,不用带.C)选择保存位置后确定好了,弹出个对话框,不管它,下一步接下来注意了,这个对话框中,应用程序类型要选择控制台应用程序,附加选项一定要选中“空项目”。
然后点完成。
然后对话框消失,回到VS主界面,这时会在左侧和右侧多了如图工具栏“解决方案管理器”,如果没有,请点击快捷键(最左边)在源文件上点右键,选择“添加→新建项”。
这里注意,如果你已经有写好的C源文件,那么要选择“现有项”又打开个对话框,不管左边的,在右边的模板中选择C++文件(注一),在下面的名称中输入源文件的名字加上.C(注二),保存位置用默认的。
写在前面在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫《Visual C++2005入门经典》的书帮了我不少的忙。
因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译、运行,告诉我们什么是控制台程序,什么事Win程序,什么是GUI程序,C++能干什么,VC和C++的区别是什么。
现在有很多的朋友应该也有这些问题吧?学C++用C++也有几年了,算不上熟悉,算是初窥门径吧,我想我应该做点什么帮助一下那些和曾经的我一样困惑的朋友,特别是学生朋友,告诉他们他们所困惑的问题的答案。
记得我学C++的时候,没有人教,有的时候也走了不少弯路,甚至连调试也不会,也不知道可以通过看调用堆栈看调用次序,还自己慢慢的去搜索,好傻啊。
接下来我会做一个《Visual C++2010入门教程》系列,用来帮助初学者。
刚开始学的时候是很痛苦的,这个我深有体会,特别是身边还没有人能够指导一二的。
内容主要涵盖在Windows下面使用C++进行开发的常见内容,Visual Studio2010的使用,如何创建新项目,如何调试,如果配置项目属性等等,另外还会介绍Visual C++2010中新加如的一些内容,包括一些新的STL组建,一些新的语法支持等等。
由于本人水平有限,其中难免有错误,希望大家谅解,如果大家有发现问题还请务必及时指出来,否则误导了他人我就罪不容恕了。
注意,本教程非C++教程,不会教你C++,只会教你如何使用Visual C++2010去练习去学习其它C++教材上面的程序。
因此建议大家认真的去看其他的C++教程,在使用Visual C++2010实践的时候如果遇到问题可以到这里来参考。
推荐《C++Primer》、《C++程序设计语言》《Visual C++2008入门经典》。
第一章:关于Visual Studio、VC和C++的那些事首先,这三个东西有什么区别呢?VC和C++是相同的吗,有什么区别呢?我刚开始学C++的时候也有这样的问题,在这里我来替大家解释一下他们到底是什么。
VisualC++常见错误及解决方案
1.致命错误C1002
错误信息
compiler is out of heap space in pass 2
错误分析
编译器在执行第二阶段堆空间溢出。
编译器运行的动态内存空间不足,在编译器(C2.EXE)执行第二阶段。
通常,这意味着该程序有太多的符号或者复杂的表达式。
解决方案:
将文件分为几个较小的源文件。
将复杂的表达式变成较小的字表达式。
删除在系统中消耗大量的内存运行的其他程序或驱动程序。
2.致命错误C1023
错误信息
cannot open source file 'filename'
错误分析
无法打开源文件。
给定的文件不存在,或者没有被发现,从而导致无法打开。
如果只出现错误号而没有出现错误信息,则代表编译器用完了文件句柄。
解决方案
确保环境的设置是有效的,为文件指定正确的路径。
此错误可能是没有足够的文件句柄引起的,关闭一些已经打开的应用程序,然后重新编译。
试图打开一个文件或目录,如果您没有权限可能导致此错误。
将文件移动到一个您有访问权限的目录下,或要求您的网络管理员授予您访问该文件的权限。
请确保该文件的名称拼写正确。
3.致命错误C1034
错误信息
‘file’:no include path set
错误分析
头文件没有设置包含路径。
INCLUDE环境变量还没有设置。
解决方案
在工具菜单上选择选项命令进行设置。
在选项对话框中,选择Directiories标签。
显示目录框,选择包含文件并指定包含文件的路径。
如果您使用的是命令行编译器,运行的vcvars32.bat批处理文件设置INCLUDE 环境变量。
4.致命错误C1042
错误信息
cannot open compiler intermediate file - no such file or directory 错误分析
无法打开编译器中间文件,没有这样的文件或目录。
编译器无法创建在编译过程中使用的中间文件,因为TMP环境变量设置为一个无效的目录或路径。
解决方案
使用SET命令来更改TMP环境变量,使其指向一个有效的目录。
5.致命错误C1053
错误信息
‘<identifier>’:function too large
错误分析
‘<identifier>’功能过于庞大。
函数太大无法进行编译。
解决方案
你可以尝试下优化编译,或者将原函数分成两个或多个函数。
请注意,内联函数调用例程可能使函数变的很大。
6.致命错误C1055
错误信息
compiler limit:out of keys
错误分析
编译器受限制:键值溢出。
正在编译的文件中包含太多的符号。
编译器建立了一个符号表并且使用哈希键来查找表中的符号。
此错误指示编译器已达到了自身的键值限制。
解决方案
尝试将原文件分成小的文件,并重新编译。
只包括那些绝对必要的头文件。
在可能的地方,重复使用临时和全局变量,,以便减少符号生成,从而需要较少的键值。
7.致命错误C1058
错误信息
compiler limit:too many formal arguments
错误分析
编译器受限制:太多的形式参数。
该函数的声明有太多的形参。
解决方案
通过结构或结构体指针减少参数的个数。
8.致命错误C1067
错误信息
compiler limit:debug information module size exceeded 错误分析
编译器受限制:调试信息模块大小限制。
此错误可能是由于一个名称超过247个字符的符号命名造成。
解决方案
缩短符号名长度。
9.致命错误C1189
错误信息
#error:user supplied error message
错误分析
用户自定义错误信息。
此错误发生在程序中有一个#error指示的时候。
举例
#undef _WIN32
#if !defined(_WIN32)
#error _WIN32 must be defined //error
#endif
int main() {
return 0; }。