error C4716side-react side effectt

常见的vc++编译错误
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分支中)
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
重载的函数“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: '= =' :
op 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)"
连接时发现没有实现的外部符号(变量、函数等)。
关于VC编译错误fatal error
C1083的解决办法
这时因为该模块没有包括预编译头文件“stdafx.h”的缘故。
VC用一个stdafx.cpp包含头文件stdafx.h,然后在stdafx.h里包含大部分系统头文件,这
样编译时VC就通过编译stdafx.cpp把大部分系统头文件预编译进来了,在Debug目录下有
一个很大的文件*.pch,这里就存储了预编译信息。
根据这个原理,如果这个pch损坏了或被删除了,系统重新编译时就会抱怨“cannot&open
precompiled&header&file&debug/*.pch”。这时怎么解决这个问题呢,
打开Project-》Setting对话框选C++页,将Category下拉式列表框选中Precompiled&Headers,
最简单的办法就是选中第一个选项“Not&using....",这样就根本不用预编译头也不去寻找pch文件,
就不会出错了,但是这样做的后果是每次编译、连接都化更多的时间。
第二个选项”Automatic&...",然后在“Through&header”力填上stdafx.h,这样
如果没有pch文件系统会自动生成一个pch,如果有的话就使用这个pch,这个选项是比较“
智能”的。
第三个选项是强行创建一个pch文件,第四个选项是直接使用pch文件。当然“Through
headers”里都填stdafx.h了。
nafxcwd.lib(appcore.obj) : error
LNK2001: unresolved external symbol ___argv
nafxcwd.lib(appcore.obj) : error
LNK2001: unresolved external symbol ___argc
nafxcwd.lib(timecore.obj) : error
LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(apphelp.obj) : error
LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(filelist.obj) : error
LNK2001: unresolved external symbol __mbctype
解决办法:
PROJECT-&SETING-&C/C++-&PREPROCESSOR-&定义
_AFXDLL,完毕。
LINK : warning LNK4098: defaultlib
"MSVCRT" conflicts wi use
/NODEFAULTLIB:library
解决办法:
PROJECT-&SETING-&LINK-&INPUT-&IGNORE
LIB...-&MSVCRT.LIB
以下转其他,
1. Linking...
&&&&nafxcwd.lib(thrdcore.obj)
: error LNK2001: unresolved external symbol __endthreadex
&&&&nafxcwd.lib(thrdcore.obj)
: error LNK2001: unresolved external symbol __beginthreadex
&&&&libcd.lib(crt0.obj)
: error LNK2001: unresolved external symbol _main
&&&&VC++默认的工程设置是单线程的,而你使用了多线程,所以要修改设置。选择菜单“Project|settings”,选择C/C++标签,在CODE
GENERATION分类中选择除SINGLE-THREADED的其他选择。
2.fatal error C1010: unexpected end of
file while looking for precompiled header directive
&&&&两个办法:
&&&&--&肯定是一个新添加的类的.cpp文件开头没包含stdafx.h,在该文件最前面加上即可
&&&&--&有时可以使用右键点击项目工程中的该cpp文件,选择setting,在c/c++栏,选择PreCompiled
headers,然后设置第一选项,选择不使用预编译头,解决这个问题。
3.在编译时产生的下面的代码,那么下面的代码中的括号内的数字代表什么意思,还有error后的数字呢?
&&&&Compiling...
&&&&CalWnd.cpp
&&&&E:\StudyVC\CalendarApp\CalWnd.cpp(1092)
: error C2065: 'TTS_BALLOON' : undeclared identifier
&&&&E:\StudyVC\CalendarApp\CalWnd.cpp(1092)
: error C2059: syntax error : ')'
&&&&E:\StudyVC\CalendarApp\CalWnd.cpp(1092)
: warning C4552: '|' : op expected
operator with side-effect
executing cl.exe.
Q:括号中的数字是出错的代码行的行号。例如错误中的第1行表示CalWnd.cpp的1092行出现了错误。如果想快速找到这行,可以在错误信息行上双击鼠标,这时VC++会自动打开CalWnd.cpp文件并定位到这行。
Error后面的数字表示错误代号。错误代号分为两类:C开头的是编译错误,即你的代码存在语法错误,你需要修改代码;LNK开头的是链接错误,通常你的代码并没有语法错误,可能是配置错误引起的,但有时LNK可能是由于拼写错误引起的。在错误信息行上按F1键,VC++会打开MSDN帮助并显示关于该错误信息的一个简单的解释,你可以根据该解释来知道到底是什么意思。
4.vc编译的时候可以设置两个版本:debug和release,debug版本在运行的时候点击帮助菜单的about对话框出现如下错误信息:
Assertion Failed:
&&&&Program
:C:\fuan\Debug\fuan.exe
&&&&File:wincore.cpp
&&&&Line:628
information on how your program can cause an assertion failure,see
visual c++ documentation on asserts.
&&&&(Please
retry to debug application).
&&&&但是如果把配置改成release版本,就不会出现问题,about对话框弹出正常。使用的是同一个源程序,为什么会出现不同的结果?
在MFC中,大量使用了ASSERT宏,这些宏通常可以来纠正一些错误,如还没有初始化指针就使用等。你所遇到的信息就是ASSERT宏报告的错误。通常你要检查一下是否存在错误。在Release方法下,ASSERT宏不会执行,所以也没有错误信息。不过,MFC中的ASSERT宏有时管得有点宽,如果确认没有错误,也可以不理会它。
5. 在win2000上能编译的程序到了win98就不能编译了。
&&&&没有出错信息,一编译就停在
&&&&--Configuration:
Monitor - Win32 Release-------
&&&&Copying
contents file...
&&&&是不是跟*.hpj文件有关系,应该怎么改?
Q:是和编译帮助文件有关,据说如果在Win98下安装了Norton
AntiVirtus 2000就会出现这种问题。可以把帮助文件从工程中去掉:
&&&&1、在FileView标签下,选择Source
Files文件夹下面的.hpj文件。
&&&&2、右击文件并从菜单中选择Settings。
&&&&3、点击General标签。
&&&&4、清除掉Always
use custom build step选项并选择Exclude file from build。
6.在用EnumWindows(EnumWindowsProc,(LPARAM)0);编译时老是出错:cannot convert
parameter 1 from 'int (struct HWND__ *,long)' to 'int (__stdcall
*)(struct HWND__ *,long)'
Q:实际上看一下错误信息就知道,你的EnumWindowsProc大概定义为:
EnumWindowsProc(HWND, long);
&&&&实际应该定义为:
__stdcall EnumWindowsProc(HWND, long);
7.编译以WinMain开头的函数出现LNK2001错误
LIBCD.lib(crt0.obj) : error LNK2001:
unresolved external symbol _main
&&&&Debug/Cpp1.exe
: fatal error LNK1120: 1 unresolved externals
Q:估计是选错了工程类型。在VC中除了可以编译MFC程序外,还可以建立Win32
Application,以WinMain为主函数。可以在VC中建立Win32
Application,然后加入你的C程序,然后编译即可。
8.编译后出现大量错误信息怎么办
错误信息如下:
:Compiling C:\user\x.cpp
&&&&Error:
x.cpp(20,26):Call to undefined function 'loadCursor'
&&&&Error:
x.cpp(20,15):Cannot convert 'int' to 'HICON__ *'
&&&&Error:
x.cpp(23,21):Cannot convert 'void *' to 'HBRUSH__ *'
&&&&Error:
x.cpp(30,6):Undefined symbol 'hWnd'
&&&&Error:
x.cpp(32,13):Cannot convert 'void *' to 'HINSTANCE__ *'
&&&&Error:
x.cpp(32,13):Type mismatch in parameter 'hInstance' in call to
&&&&'__stdcall
CreateWindowExA(unsigned long,const char *,const char
&&&&*,unsigned
long,int,int,int,int,HWND__ *,HMENU__ *,HINSTANCE__ *,void
&&&&Error:
x.cpp(33,32):Undefined symbol 'SHOW_MAXIMIZED'
: x.cpp(40,2):'hwnd' is declared but never used
: x.cpp(40,2):Parameter 'lpszCmdLine' is never used
: x.cpp(40,2):Parameter 'nCmdShow' is never used
&&&&Error:
x.cpp(54,20):Illegal structure operation
&&&&Error:
x.cpp(54,41):Undefined symbol 'tmExternalLeading'
&&&&Error:
x.cpp(56,40):Undefined symbol 'poshorzscoll'
&&&&Error:
x.cpp(57,40):Undefined symbol 'posvertscoll'
&&&&Error:
x.cpp(58,16):Call to undefined function 'SetSCrollRange'
&&&&Error:
x.cpp(135,73):Function call missing )
&&&&Error:
x.cpp(142,7):Misplaced break
&&&&Error:
x.cpp(143,5):Case outside of switch
&&&&Error:
x.cpp(143,17):Expression syntax
&&&&Error:
x.cpp(145,7):Misplaced break
&&&&Error:
x.cpp(146,8):Default outside of switch
: x.cpp(148,2):'slength' is declared but never used
&&&&Error:
x.cpp(149,7):Declaration terminated incorrectly
&&&&Error:
x.cpp(150,2):Unexpected }
Q:不可能一一为你分析错误,告诉你一些消除错误的原则,你自己来逐一分析,这样你才能学会编程。
&&&&首先,用不着见到错误就六神无主。错误信息虽多,但没什么了不起。编译错误就象是拼写检查的结果。
&&&&下面,看看有多少条错误信息(Error)和警告(Warn)。当然先分析错误信息,有些警告是由于错误信息产生的。如果你对某条错误信息的含义不了解,可以选择该条错误信息,然后按F1键,在帮助文件中肯定会有更详细的介绍。
&&&&绝大多数编译错误实际上都是拼写错误。看看你的程序吧。凡是undefined错误都是拼写错误。象把LoadCursor写成loadCursor,hWnd写成hwnd,别忘了C/C++是区分大小写的!还有把SW_SHOWMAXIMIZED写成SHOW_MAXIMIZED。有时候记忆出了错误,查查手册或帮助就行了。
&&&&接下来,要查“(”、“)”、“{”、“}”等各种括号的匹配问题。Function
call missing )、Misplaced break、Case outside of
switch这些信息都说明你的程序中存在匹配问题。你的程序中有一行
TextOut(hdc,-charwt*(poshorzscroll,charht*(t-posvertscroll),szbuffer,i);}
显然少了一个“)”括号。一般在检查这种错误时,必须找到第一个出现此类错误的地方,修改后一般立即重新
编译,因为一个匹配错误可能引发几十个错误,继续查后面的错误意义不大。
&&&&剩下的Cannot
convert、Type
mismatch错误是数据类型转换错误。这其实不一定是错误,因为C++对参数类型检查的要严格一些,所以有时要尽可能使用强制类型转换来避免这种错误。比如你的
&&&&wcAPP.hbrBackground=GetStockObject(WHITE_BRUSH);
&&&&导致Cannot
convert 'void *' to 'HBRUSH__ *'错误,你可以试着在相关参数前加上(HBRUSH),改成
&&&&wcAPP.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
&&&&对于这类转换,不同的C++系统可能不同,所以有的时候不写也可以,但我建议要强制转换,这样麻烦少。同时要注意变量类型是否可以强制转换,比如有的参数为指针类型,要在普通变量前加“&”操作符。这要参考有关函数的帮助。
在创建MFC项目时, 不使用MFC AppWizard向导,
如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有:
libcmtd.lib(crt0.obj) : error LNK2001:
unresolved external symbol _main
LIBCD.lib(wincrt0.obj) : error LNK2001:
unresolved external symbol
msvcrtd.lib(crtexew.obj) : error
LNK2001: unresolved external symbol
nafxcwd.lib(thrdcore.obj) : error
LNK2001: unresolved external symbol __beginthreadex
nafxcwd.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"属性页,
Options中将/subsystem:console改成/subsystem:windows
2. Console子系统设置错误, 提示:
LIBCD.lib(wincrt0.obj) : error LNK2001:
unresolved external symbol
控制台项目要使用Console子系统, 而不是Windows,
[Project] --& [Settings]
--& 选择"Link"属性页,
Options中将/subsystem:windows改成/subsystem:console
3. 程序入口设置错误, 提示:
msvcrtd.lib(crtexew.obj) : error
LNK2001: unresolved external symbol
通常, MFC项目的程序入口函数是WinMain,
如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup,
所以需要重新设置程序入口:
[Project] --& [Settings]
--& 选择"C/C++"属性页,
在Category中选择Output,
再在Entry-point
symbol中填入wWinMainCRTStartup, 即可
4. 线程运行时库设置错误, 提示:
nafxcwd.lib(thrdcore.obj) : error
LNK2001: unresolved external symbol __beginthreadex
nafxcwd.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版本)
Single-Threaded&&&&&&&&&&单线程静态链接库(debug版本)
Multithreaded&&&&&&&&&&&&多线程静态链接库(debug版本)
Debug Multithreaded
DLL&&&&&&&&多线程动态链接库(debug版本)
单线程: 不需要多线程调用时,
多用在DOS环境下
多线程: 可以并发运行
静态库: 直接将库与程序Link,
可以脱离MFC库运行
动态库: 需要相应的DLL动态库,
程序才能运行
release版本:
正式发布时使用
debug版本: 调试阶段使用
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)赞助商链接
当前位置: >>
C++常见错误中英对照及注释
C++常见错误中英文对照表fatal error C1003: error
stopping compilation 中 文对照:(编译错误)错误太多,停止编译分析:修改之前的错误, 再次编译 fatal error C1004: unexpected end of file found 中文对照: (编译错误) 文件未结束分析: 一个函数或者一个结构定义缺少“-”、 或者在一个函 数调用或表达式中括号没有配对出现、或者注释符“/*…*/”不完整等 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记 了向源中添加“#include &stdafx.h&”? 解决 1:关闭.CPP 文件的&使用预编译头&的选项 右键选择该文件-& 属性-&预编译头,选&不使用预编译头& 解决 2: 直接在工程设置里关闭使用预编译头的选项。步骤和上一方 法类似 fatal error C1083: Cannot open include file: 'xxx': No such file or directory 中文对照:(编译错误)无法打开头文件 xxx:没有这个文 件或路径分析:头文件不存在、或者头文件拼写错误、或者文件为只 读 error BK1506 : cannot open file '.\Debug\StdAfx.sbr': No such file or directory 右键当前工程-》设置-》浏览信息-》取消创建创建浏览信息 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.456E error 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,删去多余的 default error 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’语法错误 分析:引起错误的原因很多,可能多加或少加了符号 xxx error 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、未定义变量、数组、函数原型等, 注意拼写错误或区分大小写。 你就直接把#include &StdAfx.h&删了即 可。。 error C2078: too many initializers 中文对照: (编译错误)初始值过多 分析:一般是数组初始化时初始值的个数大于数组长度,例如“int b*2+=,1,2,3-;” error C2082: redefinition of formal parameter 'xxx' 中文对照: (编译错 误)重复定义形式参数 xxx 分析:函数首部中的形式参数不能在函数 体中再次被定义 error C2084: function 'xxx' already has a body 中文对照:(编译错误) 已定义函数 xxx 分析:在 VC++早期版本中函数不能重名,6.0 版本中 支持函数的重载,函数名可以相同但参数不一样 error C2086: 'xxx' : redefinition 中文对照:(编译错误)标识符 xxx 重定义分析:变量名、数组名重名 error C2087: '&Unknown&' : missing subscript 中文对照:(编译错误) 下标未知分析: 一般是定义二维数组时未指定第二维的长度, 例如“int a*3+*+;” error C2100: illegal indirection 中文对照: (编译错误)非法的 间接访问运算符“*” 分析:对非指针变量使用“*”运算 error C2105: 'operator' needs l-value 中文对照:(编译错误)操作符 需要左值分析:例如“(a+b)++;”语句,“++”运算符无效 error C2106: 'operator': left operand must be l-value 中文对照: (编译 错误)操作符的左操作数必须是左值分析:例如“a+b=1;”语句,“=” 运算符左值必须为变量,不能是表达式 error C2110: cannot add two pointers 中文对照:(编译错误)两个指 针量不能相加分析: 例如“int *pa,*pb,*a; a = pa +”中两个指针变量 不能进行“+”运算 error C2117: 'xxx' : array bounds overflow 中文对照:(编译错误)数 组 xxx 边界溢出分析:一般是字符数组初始化时字符串长度大于字符 数组长度,例如“char str*4+ = &abcd&;” error C2118: negative subscript or subscript is too large 中文对照: (编 译错误)下标为负或下标太大分析:一般是定义数组或引用数组元素 时下标不正确 error C2124: divide or mod by zero 中文对照:(编译错误)被零除或 对 0 求余分析:例如“int i = 1 / 0;”除数为 0 error C2133: 'xxx' : unknown size 中文对照:(编译错误)数组 xxx 长 度未知分析: 一般是定义数组时未初始化也未指定数组长度, 例如“int a*+;” error C2137: empty character constant。中文对照:(编译错误) 字符型常量为空分析:一对单引号“''”中不能没有任何字符 error C2143: syntax error : missing 'token1' before 'token2' error C2146: syntax error : missing 'token1' before identifier 'identifier' 中文对照: (编译错误)在标识符或语言符号 2 前漏写语言符号 1 分析:可能 缺少“,”、“)”或“;”等语言符号 或者缺乏头文件 error C2144: syntax error : missing ')' before type 'xxx' 中文对照:(编 译错误)在 xxx 类型前缺少‘)’ 分析:一般是函数调用时定义了实参 的类型 error C2181: illegal else without matching if 中文对照:(编译错误) 非法的没有与 if 相匹配的 else 分析:可能多加了“;”或复合语句没 有使用“,-” error C2196: case value '0' already used 中文对照:(编译错误)case 值 0 已使用分析:case 后常量表达式的值不能重复出现 error C2296: '%' : illegal, left operand has type 'float' error C2297: '%' : illegal, right operand has type 'float' 中文对照:(编 译错误)%运算的左(右)操作数类型为 float,这是非法的分析:求余 运算的对象必须均为 int 类型,应正确定义变量类型或使用强制类型 转换 error C2371: 'xxx' : different basic types 中文对照:(编 译错误)标识符 xxx 重定义;基类型不同分析:定义变量、数组等时 重名 error C2440: '=' : cannot convert from 'char [2]' to 'char' 'initializing' : cannot convert from 'class CShowDlg1 *' to 'class CShowDlg *'把 CShowDlg 改为 CShowDlg1。 中文对照: (编译错误) 赋值运算, 无法从字符数组转换为字符分析: 不能用字符串或字符数组对字符型数据赋值,更一般的情况,类型无 法转换 ,声明的和使用的变量不一致。 error C2447: missing function header (old-style formal list?) error C2448: '&Unknown&' : function-style initializer appears to be a function definition 中文对照:(编译错误)缺少函数标题(是否是老 式的形式表?) 分析:函数定义不正确,函数首部的“( )”后多了分号 或者采用了老式的 C 语言的形参表 error C2450: switch expression of type 'xxx' is illegal 中文对照:(编译 错误)switch 表达式为非法的 xxx 类型分析:switch 表达式类型应为 int 或 char error C2466: cannot allocate an array of constant size 0 中文对照: (编 译错误)不能分配长度为 0 的数组分析:一般是定义数组时数组长度 为0 error C2556: 'void __thiscall......overloaded function differs only by return type from 'int __thiscall error C2556: 'int __thiscallCat::SetAge(int)' : overloaded function differs only by return type from 'void __thiscall Cat::SetAge(int)' E:\C++\实现类\c.cpp(6) : see declaration of 'SetAge' E:\C++\实现类\c.cpp(20) : error C2371: 'SetAge' : different basic types E:\C++\实现类\c.cpp(6) : see declaration of 'SetAge' E:\C++\ 实现类 \c.cpp(36) : error C2264: 'SetAge' : error in function defin function not called 执行 cl.exe 时出错. 函数调用不一致 此错误说明的是: 重载函数仅仅只有返回类型不同这在 c++中是不允许的 所以报出错信息 其实我并没有要将函数重载 class a { void Func(void); } class b { friend a::Func(void); // } 编译器查找啊 a::函数 找到 void Func(void) 没有找到完全一样的 , 故而以为要重载这个函数。可见,这个 void 也不是可以随便省略的 否则可能会报错还有一个 用 BOOL bool BOOL 如果声明 用 bool 定义 应为 friend void a::Func(void);也是会报错的 。函数调用不一致error C2601: 'xxx' : local function definitions are illegal 中文对照:(编 译错误)函数 xxx 定义非法分析:一般是在一个函数的函数体中定义 另一个函数 error C2632: 'type1' followed by 'type2' is illegal 中文对照: (编译错误) 类型 1 后紧接着类型 2,这是非法的分析:例如“”语句 error C2660: 'xxx' : function does not take n parameters 中文对照: (编 译错误)函数 xxx 不能带 n 个参数分析:调用函数时实参个数不对, 例如“sin(x,y);” error C2664: 'xxx' : cannot convert parameter n from 'type1' to 'type2' 中文对照:(编译错误)函数 xxx 不能将第 n 个参数从类型 1 转换为 类型 2 分析:一般是函数调用时实参与形参类型不一致 把这句 s.Format(&%d&, i); 修改如下:s.Format(_T(&%d&),i);前一周我刚 换上 vs2008 也是,然后这样修改的就没错了。error C2676: binary '&&' : 'class istream_withassign' does not define this operator or a conversion to a type acceptable to the predefined operator error C2676: binary '&&' : 'class ostream_withassign' does not define this operator or a conversion to a type acceptable to the predefined operator 分析:“&&”、“&&”运算符使用错误,例如“cin&&x; cout&&y;” error C2784: “std::basic_istream&char,_Traits& &std::operator &&(std::basic_istream&char,_Traits& &,unsigned char &)”: 无法从“std::ostream”为“std::basic_istream&char,_Traits& &”推导模板 参数应该写成了 cin&&方向反了warning C4003: not enough actual parameters for macro 'xxx' 中文对 照:(编译警告)宏 xxx 没有足够的实参分析:一般是带参宏展开时 未传入参数 warning C4067: unexpected tokens following preprocessor directive - expected a newline 中文对照:(编译警告)预处理命令后 出现意外的符号 - 期待新行分析:“#include&iostream.h&;”命令后的 “;”为多余的字符 warning C4091: '' : ignored on left of 'type' when no variable is declared 中文对照:(编译警告)当没有声明变量时忽略类型说明分析:语句 “”未定义任何变量,不影响程序执行 warning C4101: 'xxx' : unreferenced local variable 中文对照:(编译警 告)变量 xxx 定义了但未使用分析:可去掉该变量的定义,不影响程 序执行 warning C4244: '=' : conversion from 'type1' to 'type2', possible loss of data 中文对照: (编译警告)赋值运算,从数据类型 1 转换为 数据类型 2,可能丢失数据分析:需正确定义变量类型,数据类型 1 为 float 或 double、数据类型 2 为 int 时,结果有可能不正确,数据类 型 1 为 double、数据类型 2 为 float 时,不影响程序结果,可忽略该 警告 warning C4305: 'initializing' : truncation from 'const double' to 'float' 中文对照:(编译警告)初始化,截取双精度常量为 float 类型分析: 出现在对 float 类型变量赋值时,一般不影响最终结果 warning C4390: ';' : empty contro is this the intent? 中文对照:(编译警告)‘;’控制语句为空语句,是程序的意图吗? 分析:if 语句的分支或循环控制语句的循环体为空语句,一般是多加 了“;” warning C4508: 'xxx' : function s 'void' return type assumed 中文对照:(编译警告)函数 xxx 应有返回值,假定返回类 型为 void 分析:一般是未定义 main 函数的类型为 void,不影响程序 执行 warning C4552: 'operator' : op expected operator with side-effect 中文对照:(编译警告)运算符无效果;期待副作用 的操作符分析:例如“i+j;”语句,“+”运算无意义 warning C4553: '==' : op did you intend '='? 中文 对照: (编译警告)“==”运算符无效;是否为“=”?分析:例如 “i==j;” 语句,“==”运算无意义 warning C4700: local variable 'xxx' used without having been initialized 中文对照:(编译警告)变量 xxx 在使用前未初始化分析:变量未赋 值,结果有可能不正确,如果变量通过 scanf 函数赋值,则有可能漏 写“&”运算符,或变量通过 cin 赋值,语句有误 warning C4715: 'xxx' : not all control paths return a value 中文对照: (编 译警告)函数 xxx 不是所有的控制路径都有返回值分析:一般是在函 数的 if 语句中包含 return 语句, 当 if 语句的条件不成立时没有返回值 error C4716: 'xxx' : must return a value 中文对照:(编译错误)函数 xxx 必须返回一个值分析:仅当函数类型为 void 时,才能使用没有返 回值的返回命令。error C4716: 'Cat::SetAge' : must return a value,要 有返回值 warning C4723: potential divide by 0 中文对照:(编译警告)有可能 被 0 除分析:表达式值为 0 时不能作为除数 warning C4804: '&' : unsafe use of type 'bool' in operation 中文对照: (编译警告)‘&’:不安全的布尔类型的使用分析:例如关系表达式 “0&=x&10”有可能引起逻辑错误fatal error LNK1104: cannot open file &Debug/Cpp1.exe& 中文对照: (链 接错误)无法打开文件 Debug/Cpp1.exe 分析:重新编译链接 fatal error LNK1168: cannot open Debug/Cpp1.exe for writing 中文对 照:(链接错误)不能打开 Debug/Cpp1.exe 文件,以改写内容。分 析:一般是 Cpp1.exe 还在运行,未关闭 fatal error LNK1169: one or more multiply defined symbols found 中文 对照:(链接错误)出现一个或更多的多重定义符号。分析:一般与 error LNK2005 一同出现 error LNK2001: unresolved external symbol _main 中文对照: (链接错 误) 未处理的外部标识 main 分析: 一般是 main 拼写错误, 例如“void mian()” error LNK2005: _main already defined in Cpp1.obj 中文对照: (链接错误)main 函数已经在 Cpp1.obj 文件中定义分析:未关闭上 一程序的工作空间,导致出现多个 main 函数 vc2008 报警告:不明确的入口点 编译通过了,只是有警告。 因为你的入口点函数 &main()&, 不是标准的格式。标准格式是: int _tmain(int argc, _TCHAR* argv[])
更多搜索:
赞助商链接
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 vue no side effect 的文章

 

随机推荐