VC++编译器设置及错误一览
安装、使用vc遇到的问题及解决

感言:真是久病成良医啊!1. C语言中出现 "Compiling... Error spawning cl.exe是什么意思?怎么解决?很多人在安装VC 6.0后有过点击“Compile或者“Build后被出现的"Compiling... ,Error spawning cl.exe错误提示给郁闷过。
很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,"CL.exe是VC使用真正的编译器(编译程序),其路径在“ VC根目录Bin ”下面,你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:打开vc界面点击VC “TOOLS (工具)”一> “Optio n选择)”—> “ Directories(目录)"重新设置“ Excutable Fils Include Files、Library Files、Source Files的路径。
很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK 了。
如果你是按照初始路径安装VC6.0的,路径应为:executatble files:C:\Program Files'Microsoft Visual Studio'Commo n\MSDev98\Bi nC:\Program Files'Microsoft Visual Studio\VC98\BINC:\Program Files'Microsoft Visual Studio'Commo n'TOOLSC:\Program Files'Microsoft Visual Studio\Commo n\TOOLS\WINNTin clude files:C:\Program Files'Microsoft Visual Studio\VC98\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\ATL\INCLUDElibrary files:C:\Program Files'Microsoft Visual Studio\VC98\LIBC:\Program Files'Microsoft Visual Studio\VC98\MFC\LIBsource files:C:\Program Files'Microsoft Visual Studio\VC98\MFC\SRCC:\Program Files'Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\ATL\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\CRT\SRC如果你装在其他盘里,则仿照其路径变通就行。
VC中常见的一些编译链接错误的解决

VC中常见的一些编译链接错误的解决VC中常见的一些编译链接错误的解决2010-03-22 15:59问题1:Linking...nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexlibcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main答VC++默认的工程设置是单线程的,而你使用了多线程,所以要修改设置。
选择菜单“Project|settings”,选择C/C++标签,在CODEGENERATION分类中选择除SINGLE-THREADED的其他选择。
比如可以在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版本: 调试阶段使用问题2fatal error C1010: unexpected end of file while looking for precompiled header directive该如何解如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiledheaders。
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):当程序没有按照程序员的意图执行时,就表明程序中存在逻辑错误。
(完整word版)C语言程序编译常见错误对照

error C2117: 'xxx' : array bounds overflow
中文对照:(编译Байду номын сангаас误)数组xxx边界溢出
分析:一般是字符数组初始化时字符串长度大于字符数组长度,例如“char str[4] = "abcd";”
中文对照:(编译错误)重复定义形式参数xxx
分析:函数首部中的形式参数不能在函数体中再次被定义
error C2084: function 'xxx' already has a body
中文对照:(编译错误)已定义函数xxx
分析:在VC++早期版本中函数不能重名,6.0版本中支持函数的重载,函数名可以相同但参数不一样
error C2048: more than one default
中文对照:(编译错误)default语句多于一个
分析:switch语句中只能有一个default,删去多余的default
error C2050: switch expression not integral
中文对照:(编译错误)switch表达式不是整型的
error C2017: illegal escape sequence
中文对照:(编译错误)转义字符非法
分析:一般是转义字符位于' '或" "之外,例如“char error = ' '\n;”
error C2018: unknown character '0xhh'
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所示。
CC++编译器错误消息

CC++编译器错误消息C/C++编译器错误消息大全C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
下面是店铺分享的C/C++编译器错误消息大全,一起来看一下吧。
编译器错误 C2001 错误消息常数中有换行符字符串常数不能继续到第二行,除非进行下列操作:用反斜杠结束第一行。
用一个双引号结束第一行上的字符串,并在下一行用另一个双引号开始该字符串。
用结束第一行是不够的。
编译器错误 C2002 错误消息无效的宽字符常数多字节字符常数是非法的。
通过检查下面的可能原因进行修复1.宽字符常数包含的字节比需要的多。
2.未包括标准头文件 STDDEF.h。
3.宽字符不能与一般字符串连接。
4.宽字符常数之前必须是字符“L”:编译器错误 C2003 错误消息应输入“defined id”标识符必须跟在预处理器关键字之后。
编译器错误 C2004 错误消息应为“defined(id)”标识符必须出现在预处理器关键字之后的括号中。
也可能由于为 Visual Studio .NET 2003 进行的编译器一致性工作生成此错误:在预处理器指令中缺少括号。
如果预处理器指令缺少右括号,则编译器将生成一个错误。
编译器错误 C2005 错误消息#line 应跟一个行号,却找到“token”#line 指令后面必须跟行号。
编译器错误 C2006 错误消息“directive”应输入文件名,却找到“token”诸如#include 或#import 等指令需要文件名。
若要解决该错误,请确保token 是一个有效文件名。
并且将该文件名放在双引号或尖括号中。
编译器错误 C2007 错误消息#define 语法#define 后未出现标识符。
若要解决该错误,请使用标识符。
编译器错误 C2008 错误消息“character”: 宏定义中的意外该字符紧跟在宏名之后。
若要解决该错误,宏名之后必须有一个空格。
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编译错误fatalerrorC1083的解决办法(共12页)

关于VC编译(biānyì)错误fatal error C1083的解决办法这时因为该模块没有包括(bāokuò)预编译头文件“stdafx.h”的缘故(yuáng ù)。
VC用一个stdafx.cpp包含头文件stdafx.h,然后在stdafx.h里包含大部分系统头文件,这样编译时VC就通过编译stdafx.cpp把大部分系统头文件预编译进来了,在Debug目录下有一个很大的文件*.pch,这里就存储了预编译信息。
根据这个原理,如果这个pch损坏了或被删除了,系统重新编译时就会抱怨“cannot openprecompiled header file debug/*.pch”。
这时怎么解决这个问题呢,打开Project-》Setting对话框选C++页,将Category下拉式列表框选中Precompiled Headers,最简单的办法就是选中第一个选项“Not using....",这样就根本不用预编译头也不去寻找pch文件,就不会出错了,但是这样做的后果是每次编译、连接都化更多的时间。
第二个选项”Automatic ...",然后在“Through header”力填上stdafx.h,这样如果没有pch文件系统会自动生成一个pch,如果有的话就使用这个pch,这个选项是比较“智能”的。
第三个选项是强行创建一个pch文件,第四个选项是直接使用pch文件。
当然“Throughheaders”里都填stdafx.h了。
1.nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argvnafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argcnafxcwd.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctypenafxcwd.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctypenafxcwd.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype解决办法:PROJECT->SETING->C/C++->PREPROCESSOR->定义 _AFXDLL,完毕。
如何解决C语言中的编译错误与警告

如何解决C语言中的编译错误与警告C语言是一种广泛应用于系统编程和嵌入式开发的编程语言,它的编译过程中常常会出现各种错误和警告。
这些错误和警告可能会导致程序无法正确编译或者在运行时出现问题。
因此,解决C语言中的编译错误与警告是每个程序员都需要掌握的重要技能。
本文将介绍一些常见的编译错误和警告,并提供一些解决方法。
一、理解编译错误和警告的含义在解决编译错误和警告之前,我们首先需要理解它们的含义。
编译错误是指在编译过程中发现的语法错误或者逻辑错误,这些错误会导致程序无法正确编译。
编译警告是指在编译过程中发现的一些潜在的问题,虽然不会导致程序无法编译,但可能会导致程序在运行时出现问题。
二、常见的编译错误和警告1. 语法错误:语法错误是最常见的编译错误之一,它通常是由于编程人员在编写代码时遗漏了分号、括号不匹配等导致的。
解决语法错误的方法是仔细检查代码,确保语法正确。
2. 未声明的标识符:当使用一个未声明的标识符时,编译器会报错。
解决这个问题的方法是在使用标识符之前先进行声明或者引入相应的头文件。
3. 类型不匹配:类型不匹配是指在赋值或者函数调用过程中,变量的类型与期望的类型不一致。
解决这个问题的方法是检查变量的类型,并进行相应的类型转换。
4. 未使用的变量:编译器会对未使用的变量发出警告,这可能是由于代码中存在一些无用的变量。
解决这个问题的方法是删除未使用的变量或者对其进行使用。
5. 未初始化的变量:未初始化的变量可能导致程序在运行时出现未定义的行为。
解决这个问题的方法是在使用变量之前先进行初始化。
6. 函数返回值不匹配:函数的返回值类型与函数定义时声明的返回值类型不一致会导致编译错误。
解决这个问题的方法是检查函数的返回值类型,并进行相应的修改。
7. 潜在的内存泄漏:编译器可能会对未释放的内存发出警告,这可能会导致内存泄漏。
解决这个问题的方法是在使用完内存后及时释放。
三、解决编译错误和警告的方法1. 仔细阅读编译错误和警告信息:编译器通常会提供详细的错误和警告信息,我们应该仔细阅读这些信息,找出问题所在。
C语言编译、运行时常见错误

Turbo C编译、连接和运行时的常见错误&C语言编程风格一、编译时的常见错误1. 数据类型错误。
此类错误是初学者编程时的常见现象, 下面是一些要引起注意的错误:(1) 所有变量和常量必须要加以说明。
(2) 变量只能赋给相同类型的数据。
(3) 对scanf()语句, 用户可能输入错误类型的数据项, 这将导致运行时出错, 并报出错信息。
为避免这样的错误出现, 你就提示用户输入正确类型的数据。
(4) 在执行算术运算时要注意:a. 根据语法规则书写双精度数字。
要写0.5, 而不是写.5; 要写1.0,而不是1。
尽管C语言会自动地把整型转换成双精度型, 但书写双精度型是个好习惯。
让C语言为你做强行转换这是一种效率不高的程序设计风格。
这有可能导致转换产生错误。
b. 不要用0除。
这是一个灾难性的错误, 它会导致程序失败, 不管C语言的什么版本, 都是如此, 执行除法运算要特别小心。
c. 确保所有的双精度数(包括那些程序输入用的双精度数) 是在实数范围之内。
d. 所有整数必须在整数允许的范围内。
这适用于所有计算结果, 包括中间结果。
2. 将函数后面的";"忘掉。
此时错误提示色棒将停在该语句下的一行, 并显示:Statement missing ; in function <函数名>3. 给宏指令如#include, #define等语句尾加了";"号。
4. "{"和"}"、"("和")"、"/*"和"*/"不匹配。
引时色棒将位于错误所在的行, 并提示出有关丢掉括号的信息。
5. 没有用#include指令说明头文件, 错误信息提示有关该函数所使用的参数未定义。
6. 使用了Turbo C保留关键字作为标识符, 此时将提示定义了太多数据类型。
C常见编译链接错误即解决方法

C++课程上机实验常见错误汇集1.在源码中遗失“;”调试器错误信息:syntax err or : missing ';'2.缺少命名空间使用定义:即缺少“using namesp ace std;”调试器错误信息:例:error C2065: 'cout' : undecl ared identifier例如cout/cin/endl/<</>>等在命名空间中定义的符号和标示符无法使用。
3.变量未定义就直接使用调试器错误信息:例:error C2065: 'i' : undeclare d identifier C++语言中,变量的使用必需遵循先声明定义,后使用的原则。
4.在程序中使用中文标示符,如将英文”;”错误输入成了”;”调试器错误信息:error C2018: unknowncharacter '0xa3'在C++中,除程序注释可以采用中文外,其余字符要求使用英文。
不少同学在建立工程或程序名称时也使用中文名称,建议改掉这种习惯。
5.在使用输入输出流的时候错误使用了标示符“>>”“<<”,例cout>>a;调试器错误信息:例:error C2676: binary '>>' : 'classstd::basic_ostream<char,st ructstd::char_tr aits<char>>' doe s not define thi s operator or aconversion to atype acceptableto the predefine d operator对于流操作的方向搞错是一个普遍错误,问题本来并不复杂,可能是由于没有认真看书的原因。
在VC++6.0中编译出错时解决方法汇总

在VC++6.0中编译出错时解决方法汇总【1】missing function header (old-style formal list?)#SinaEditor_Temp_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错误指令及解决方法

1 error C2065: 'xxx' : undeclared identifier 102012136xxx标识符没定义。
标识符可能是变量名,函数名等等。
注意检查拼写,注意大小写。
注意小写字母l和数字1的区别。
检查变量的定义和使用是否一致。
变量定义语句:在函数最前面,以变量类型开始,以分号分隔的几个变量名,如int a, b; 注意一个变量定义语句只能写一个变量类型。
2 error C2146: syntax error : missing ';' before identifier 'xxx'语句末尾缺少分号,一般是错误定位所在行的上一行。
3 error LNK2001: unresolved external symbol _main没有main函数。
检查拼写,看是否把main写成了mian。
4 fatal error C1021: invalid preprocessor command 'includ'预处理指令拼写错误。
5 fatal error C1083: Cannot open include file: 'stio.h': No such file or directory包含文件名写错了。
文件名中间不能有空格。
6 error C2001: newline in constant检查是否漏了双引号,双引号是否配对,是否把双引号"写成了单引号'。
7 程序运行弹出非法操作的对话框。
检查是否有scanf漏掉&符号的问题。
8 编译时没错,链接有错:error LNK2005: _main already defined in a.objfatal error LNK1169: one or more multiply defined symbols found一般是在一个程序里面有多个源文件都包含main函数。
VC6.0常见编译错误提示附解决方法

VC6.0常见编译错误提⽰附解决⽅法编号:C2001直译:在常量中出现了换⾏。
错误分析:1.①字符串常量、字符常量中是否有换⾏。
2.②在这句语句中,某个字符串常量的尾部是否漏掉了双引号。
3.③在这语句中,某个字符创常量中是否出现了双引号字符“"”,但是没有使⽤转义符“\"”。
4.④在这句语句中,某个字符常量的尾部是否漏掉了单引号。
5.⑤是否在某句语句的尾部,或语句的中间误输⼊了⼀个单引号或双引号。
编号:C2015直译:字符常量中的字符太多了。
错误分析:单引号表⽰字符型常量。
⼀般的,单引号中必须有且只能有⼀个字符(使⽤转义符时,转义符所表⽰的字符当作⼀个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。
另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:if (x == 'x || x == 'y') { … }值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这⼏个字母的ASC码作为⼀个整数(int,4B)整体看待的数字。
编号:C2137直译:空的字符定义。
错误分析:原因是连⽤了两个单引号,⽽中间没有任何字符,这是不允许的。
编号:C2018直译:未知字符‘0x##'。
错误分析:0x##是字符ASC码的16进制表⽰法。
这⾥说的未知字符,通常是指全⾓符号、字母、数字,或者直接输⼊了汉字。
如果全⾓字符和汉字⽤双引号包含起来,则成为字符串常量的⼀部分,是不会引发这个错误的。
编号:C2141直译:在⼋进制中出现了⾮法的数字‘#'(这个数字#通常是8或者9)。
错误分析:如果某个数字常量以“0”开头(单纯的数字0除外),那么编译器会认为这是⼀个8进制数字。
例如:“089”、“078”、“093”都是⾮法的,⽽“071”是合法的,等同于是进制中的“57”。
编号:C2065直译:标识符“xxxx”未定义。
错误分析:⾸先,解释⼀下什么是标识符。
C语言编译环境中常见错误提示

C语言编译环境中常见错误提示编译中的常见错误例析(1) 警告类错误‘XXX’declare but never used 变量XXX已定义但从未用过。
‘XXX’is assigned a value which is never used 变量XXX已赋值但从未用过。
Code has no effect 程序中含有没有实际作用的代码。
Non-portable pointer conversion 不适当的指针转换,可能是在应该使用指针的地方用了一个非0的数值。
Possible use of ‘XXX’before definition 表达式中使用了未赋值的变量Redeclaration of ‘main’一个程序文件中主函数main不止一个。
Suspicious pointer conversion 可疑的指针转换。
通常是使用了基本类型不匹配的指针。
Unreachable code 程序含有不能执行到的代码。
(2) 错误或致命错误Compound statement missing } in function main 程序结尾缺少括号}。
“}”expected;“(”expected等复合语句或数组初始化的结尾缺少“)”;“(”。
Case outside of switch case 不属于Switch结构,多由于switch结构中的花括号不配对所致。
Case statement missing ‘:’switch结构中的某个case之后缺少冒号。
Constant expression required 定义数组时指定的数组长度不是常量表达式。
Declaration syntax error 结构体或联合类型的定义后缺少分号。
Declaration was expected 缺少说明,通常是因为缺少分界符如逗号、分号、右圆括号等所引起的。
Default outside switch Default部分放到了switch结构之外,一般是因为花括号不匹配而引起的。
C语言中的常见错误及解决方法

C语言中的常见错误及解决方法C语言作为一种广泛应用于软件开发领域的编程语言,常常出现一些让初学者或经验不足的程序员困惑的错误。
本文将介绍C语言中常见的错误,并提供解决这些错误的方法。
一、语法错误语法错误是编程过程中最常见的错误之一。
它们通常由于代码中存在语法错误或书写错误而导致。
以下是一些常见的语法错误和解决方法:1.1 缺少分号分号是C语言中语句结束的标志,如果未在语句末尾添加分号,编译器会报错。
解决方法是仔细检查代码,确保每个语句的末尾都有分号。
1.2 括号不匹配在C语言中,括号必须成对出现。
如果括号未正确匹配,编译器会报错。
解决方法是仔细检查代码,确保每个左括号都有对应的右括号。
1.3 大小写错误C语言对大小写敏感,因此函数和变量的命名必须与其声明中的大小写完全匹配。
解决方法是检查代码中的命名,并确保其大小写匹配。
1.4 未定义的变量使用未定义的变量会导致编译器报错。
解决方法是确保在使用变量之前先进行声明或定义。
二、逻辑错误逻辑错误在语法上没有问题,但程序的逻辑流程存在缺陷,导致程序运行不符合预期。
以下是一些常见的逻辑错误和解决方法:2.1 数组越界访问在C语言中,数组的索引从0开始。
如果超出数组的索引范围进行访问,会导致程序崩溃或产生意想不到的结果。
解决方法是检查数组索引,并确保它们在合法范围内。
2.2 逻辑运算错误逻辑运算符(如&&、||和!)在C语言中用于组合表达式。
但是,如果这些运算符的使用不当,可能会导致逻辑错误。
解决方法是仔细检查逻辑运算表达式,并确保其符合预期的逻辑规则。
2.3 循环错误循环是C语言中常用的结构之一,但循环中的错误可能导致程序无限循环或不执行循环体。
解决方法是检查循环条件和循环变量,确保它们能正确地控制循环的执行。
三、内存错误内存错误是C语言中常见的错误类型之一。
以下是一些常见的内存错误和解决方法:3.1 内存泄漏内存泄漏指的是在程序中未正确释放分配的内存空间。
c程序调试方法以及常见错误

目录使用VC6.0对C语言程序进行调试的基本手段 (2)(1)设置固定断点或临时断点 (2)(2)单步执行程序 (2)(3)使用断言 (3)(4)与调试相关的操作菜单:Build菜单 (4)(5)与调试相关的操作菜单:Debug菜单 (4)VC6.0常见编译错误提示 (6)(1)error C2001: newline in constant (6)(2)error C2015: too many characters in constant (6)(3)error C2137: empty character constant (6)(4)error C2018: unknown character '0x##' (6)(5)error C2041: illegal digit '#' for base '8' (6)(6)error C2065: 'xxxx' : undeclared identifier (7)(7)error C2086: 'xxxx' : redefinition (7)(8)error C2374: 'xxxx' : redefinition; multiple initialization (7)(9)C2143: syntax error : missing ';' before (identifier) 'xxxx' (8)(10)error C4716: 'xxx' : must return a value (8)(11) warning C4508: 'main' : function should return a value; 'void' return typeassumed (8)(12)warning C4700: local variable 'xxx' used without having been initialized (8)VC60.0常见链接错误 (10)(1)error LNK2001: unresolved external symbol _main (10)(2)error LNK2005: _main already defined in xxxx.obj (10)使用VC6.0对C语言程序进行调试的基本手段(1)设置固定断点或临时断点所谓断点,是指定程序中的某一行,让程序运行至该行后暂停运行,使得程序员可以观察分析程序的运行过程中的情况。
VisualC++编译器常用选项设置

Visual C++编译器常用选项设置编译参数的设置。
主要通过IDE的菜单项Project->Settings->C/C++页来完成。
我们可以看到这一页的最下面Project Options中的内容,一般如下:/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_Windows" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c各个参数代表的意义,可以参考Msdn。
比如/nologo表示编译时不在输出窗口显示这些设置(我们可以把这个参数去掉来看看效果)等等。
一般我们不会直接修改这些设置,而是通过这一页最上面的Category中的各项来完成。
1) General:一些总体设置。
Warning level用来控制警告信息,其中Level 1是最严重的级别;Warnings as errors将警告信息当作错误处理;Optimizations是代码优化,可以在Category的Optimizations项中进行更细的设置;Generate browse info用以生成.sbr文件,记录类、变量等符号信息,可以在Category的Listing Files项中进行更多的设置。
Debug info,生成调试信息:None,不产生任何调试信息(编译比较快);Line Numbers Only,仅生成全局的和外部符号的调试信息到.OBJ文件或.EXE文件,减小目标文件的尺寸;C 7.0- Compatible,记录调试器用到的所有符号信息到.OBJ文件和.EXE文件;Program Database,创建.PDB文件记录所有调试信息;Program Database for "Edit & Continue",创建.PDB文件记录所有调试信息,并且支持调试时编辑。
常见编译错误信息

常见编译错误信息A.1 visual c++ 6.0的错误信息概述visual C++ 6.0的编译连接错误信息分为三种类型:致命错误、一般错误和警告。
其中,致命错误是内部编译和连接器出错,一般错误指程序的语法错误,磁盘、文件或内存存取错误或命令行错误等,警告则只指出一些值得怀疑的情况,它并不阻止编译的进行。
Visual C++ 6.0的编译连接错误信息分为下列类型:编译器错误,错误代码 C999-C3999.编译器警告,错误代码C4000-C4999.连接器错误,错误代码LNK1000-LNK2035.连接器警告,错误代码LNK4001-LNK4255.C运行时错误,错误代码R6002-R6035.C运行时警告,错误代码CRT1001.资源编译器错误,错误代码RC1000-RC2236.资源编译器警告,错误代码RC4000-RC4413.资源编译器警告,错误代码RW1004-RW4004.NMAKE错误,错误代码U1000-U4014.ATL提供程序错误和警告,错误代码ATL2004-ATL4111.命令行错误,错误代码D8000-D8046.命令行警告,错误代码D9000-D9044.配置优化错误和警告,错误代码PG0001-PG1087.项目生成错误和警告,错误代码PRJ0002-PRJ0051.CVTRES错误,错误代码CVT1100-CVT4001.BSCMAKE错误,错误代码BK1500-BK4503.表达式计算错误,错误代码CXX0000-CXX0072数学错误,错误代码M6101-M6205.SPROXY错误,错误代码SDL0000-SDL1030.SPROXY警告,错误代码SDL4000-SDL4009.Web部署错误和警告,错误代码VCD0001-VCD0048.XDCMake错误和警告,错误代码VCD0001-VCD0048.其中最常用的是编译器错误和警告。
Visual C++ 6.0的编译连接错误信息数量庞大,而且是英文版的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC++编译器设置错误可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。
很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:打开vc界面点击VC“TOOLS(工具)”—>“Option (选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。
很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
如果你是按照初始路径安装vc6.0的,路径应为:executatble files:C:\Program Files\Microsoft Visual Studio\Common\MSDev98\BinC:\Program Files\Microsoft Visual Studio\VC98\BINC:\Program Files\Microsoft Visual Studio\Common\TOOLSC:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNTinclude files:C:\Program Files\Microsoft Visual Studio\VC98\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDElibrary files:C:\Program Files\Microsoft Visual Studio\VC98\LIBC:\Program Files\Microsoft Visual Studio\VC98\MFC\LIBsource files:C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRCC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC如果你装在其他盘里,则仿照其路径变通就行(我就是装在D盘)。
关键是microsoft visual studio\ 后面的东西要相同。
本人深受其害,重装多次不管用,上面中文部分为高手借鉴,上面路径为本人深思所得,终于解决。
与君分享。
下次你可以直接把C++错误提示来作为关键字搜索,比如Error spawning cl.exe 注意VC++6.0与dx版本兼容性不好dxguid.lib出现BUG,只有direct_2004_SUMMER_SDK以前的版本好用。
VC++常见编译错误一览1、fatal error C1010: unexpected end of file while looking for precompiled header directive。
寻找预编译头文件路径时遇到了不该遇到的文件尾。
解决方法:其一,包含正确路径的#include "stdafx.h";其二,在*.cpp文件的Setting里面设置,C++选项中的分类 precompiled header,选择不包含头文件即可。
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分支中)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 '{'句法错误:“{”前缺少“;”。
9、error C2146: syntax error : missing ';' before identifier 'dc'句法错误:在“dc”前丢了“;”。
10、error C2196: case value '69' already used值69已经用过。
(一般出现在switch语句的case分支中)11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'成员函数“OnTimer”没有在“CHelloView”中声明。
12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'重载的函数“void reset(int)”在类“B”中找不到。
13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。
14、error C2660: 'SetTimer' : function does not take 2 parameters“SetTimer”函数不传递2个参数。
15、warning C4035: 'f……': no return value“f……”的return语句没有返回值。
16、warning C4553: '= =' : operator has no effect; did you intend '='?没有效果的运算符“= =”;是否改为“=”?17、warning C4700: local variable 'bReset' used without having been initialized局部变量“bReset”没有初始化就使用。
18、error C4716: 'CMyApp::InitInstance' : must return a value“CMyApp::InitInstance”函数必须返回一个值。
19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing连接错误:不能打开P1.exe文件,以改写内容。
(一般是P1.Exe还在运行,未关闭)20、error LNK2001: unresolved external symbol "public: virtual _ _thiscall C……::~C……(void)"连接时发现没有实现的外部符号(变量、函数等)。
C编译错误一览Ambiguous operators need parentheses 不明确的运算需要用括号括起Ambiguous symbol 'xxx'不明确的符号Argument list syntax error参数表语法错误Array bounds missing丢失数组界限符Array size too large数组尺寸太大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此处不应出现编译预处理elseMisplaced 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用户强行中断了程序Void 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 missing )xxx语句缺少右括号xxx statement missing ;xxx缺少分号xxx' declared but never used说明了xxx但没有使用xxx' is assigned a value which is never used 给xxx赋了值但未用过Zero length structure结构体的长度为零。