C常见错误及解决方案资料下载.pdf
- 文档编号:5980572
- 上传时间:2023-05-05
- 格式:PDF
- 页数:15
- 大小:442.93KB
C常见错误及解决方案资料下载.pdf
《C常见错误及解决方案资料下载.pdf》由会员分享,可在线阅读,更多相关《C常见错误及解决方案资料下载.pdf(15页珍藏版)》请在冰点文库上搜索。
;
basic_ostreamchar,atructstd:
char_traitsdoesnotdefinethisaperatororaconversiontoatypeacceptabletotheacceptabletothepredifinedoperator错误示例couta;
解决方案把错误的输入输出符改成相应的,如couta,改成cina。
6.变量类型不匹配33C+常见错误及解决方案错误信息waringc4305:
initializing:
truncationfromconstdoubletofloat错误示例floatpi=3.412345245656245解决方案在给变量赋值的时候,看清变量类型。
7.变量在赋值之前使用错误信息warningc4700:
localvariableausedwithouthavingbeeninitialized错误示例inti,j,k;
k=i+j;
cinij;
解决方案这种错误主要是对面向过程的程序没理解透彻,变量使用前,先初始化,对其进行赋值。
8.在一个工程中出现多个main函数错误信息errorc2556:
int_cdeclmain(void):
overloadedfunctiondiffersonlybyreturntypefromvoid_cdeclmain(void)e:
tmptsing.cpp(4):
seedeclarationofmaine:
tmpbigd.cpp(15):
errorc2371:
main:
redifinition;
differentbasictypes错误示例/tsing.cppintmain()/bigd.cpp44C+常见错误及解决方案intmain()解决方案删除另外一个main函数,一个工程只能有一个main函数。
9.在函数定义后面使用分号错误信息errorC2447:
missingfunctinoheader(old-styleformallist?
)错误示例voidtest();
解决方案删除多余的分号。
10.函数定义/使用/声明参数个数不匹配错误信息errorc2660:
chang:
functiondoesnottake2parameters错误示例voidchang(inta);
intmain()chang(1,2);
voidchang(inta,intb)55C+常见错误及解决方案解决方案函数声明和定义尽量放在两个文件里,以便管理参数个数和类型要用对。
11.未包含指定头文件错误信息fatalerrorc1010:
unexpectedendoffilewhilelookingforprecompiledheaderdirective.错误示例/CMyClass定义在MyClass.h中#includeusingnamespacestd;
intmain()CMyClassmyClass;
解决方案找到因为哪个函数导致未包含头文件,然后找到该函数的头文件,包含指定头文件即可。
12.不能打开指定头文件错误信息fatalerrorc1083:
Cannotopenincludefile:
R.hNosuchfileordirectory错误示例#include“E;
Test.h”/Test.h不在E目录下,或者名字不对解决方案指定头文件名错误,或者指定路径错误,找到该头文件的正确名字或者路径。
66C+常见错误及解决方案13.类重定义错误信息errorc2011:
c:
classtyperedifinition错误示例/CMyClass.h首次定义CMyClassclassCmyClass/COtherClass.h重复定义CMyClassclassCMyClass解决方案出错信息说明,该类已经定义过了,所以删除对该类的定义,或者给该类换个类名。
14.switch语句的case分支中使用变量错误信息errorc2057:
expectedconstantexpression错误示例inta,b;
switch(a)case(b):
break;
解决方案把相应的case分支,改成常量即可。
15.函数参数在函数体中重定义77C+常见错误及解决方案错误信息errorc2082:
redifinitionofformalparameterbRet错误示例intAdd(intval1,intval2)intval1=val1;
解决方案在函数体内部有变量和参数名字一样,修改下函数体的局部变量的名字即可。
16.句法错误:
”前缺少“:
”错误信息errorc2143:
syntaxerror:
missing:
befor错误示例intmain()return0/忘记;
解决方案一般是因为编程疏忽,在相应语句后面添加;
。
17.语法错误:
50该值已被使用错误信息errorC2196:
casevalue69alreadyused。
错误示例swotcj(val)case(10):
case(50):
88C+常见错误及解决方案case(50):
解决方案一般都是疏忽所致,删除多余的case分支。
18.成员函数未声明错误信息errorC2509:
testFunc:
memberfunctionnotdeclaredinCHello。
错误示例classCHellopublic:
CHello();
inttest()CHellotest;
test.testFunc();
解决方案在类内部提供该函数的声明,以及实现。
19.函数重载错误错误信息errorC2555:
B:
f1:
overridingvirtualfunctiondiffersfromA:
f1onlybyreturntypeorcallingconvention错误代码classApublic:
99C+常见错误及解决方案virtualintf1()classB:
publicApublic:
boolf1()解决方案函数重载只能通过参数的不同来识别,不能根据返回值来确定,所以重载函数的时候注意这一点。
20.函数参数传递错误错误信息errorC2660:
test:
functiondoesnottake2parameters错误代码intspt(intnum)returnnum*num;
intmain()intresult=sqt(2,4);
解决方案传递给函数的参数和函数定义不符,调用函数的时候根据具体函数参数来传递,这样就不会出错,上面的问题只需传递一个参数就行。
21.连接错误:
不能打开某文件错误信息LINK:
fatalerrorLNK1168:
cannotopenDebug/P1.exeforwriting1010C+常见错误及解决方案错误代码无解决方案这中问题一般是因为要编译的程序正在执行,或者被其他程序调用,关闭正在执行的程序和调用该程序的程序即可。
22.数组访问越界错误信息无错误代码intarr10;
for(intk=0;
k10;
k+)arrk=k;
coutarr12endl;
解决方案越界访问数组,C+编译器并不提示错误,但这是程序致命的弱点。
有可能修改关键数据,所有访问数组的时候不要直接用常量标志下界。
23.头文件格式不正确错误信息EERROR:
wrongheaderfornamespacestd错误代码#includeusingnamespacestd;
解决方案删除iostream后面的.h即可24.无效的操作符错误信息1111C+常见错误及解决方案warningC4553:
=:
operatorhasnoeffect;
didyouintend=?
错误代码intmain(intargc,char*argv)if(argc=1)cout“oneparamter:
”endl;
if(argc=2)cout“twoparamter:
解决方案疏忽所致比较运算符误写成赋值运算符,把=改成=。
良好的编程习惯就是把比较常量作为左值。
25.函数无返回值错误信息errorC4716:
mustreturnavalue错误代码intadd(inta,intb)cout”Addtwonumbers!
intmain()intnRet=add(1,2);
cout”Thevalueis:
”nRetendl;
解决方案函数原型声明为有返回值,但是在函数实现的时候忘记写返回值了,就回出现这个错误,只要按函数声明的返回类型,返回相应的值即可。
26.类定义出错1212C+常见错误及解决方案错误信息newtypesmaynotbedefinedinareturnvalue,extraneousintignored,mainmustreturnint错误代码#includeusingnamespacestd;
classApublic:
voidfunc()couthellohasnon-pointertypeTest错误代码#includeusingnamespacestd;
classTestpublic:
voidFunc()coutFuncFunc();
/此处应该使用.操作符。
-是指针操作符1313C+常见错误及解决方案system(PAUSE);
解决方案对于指针,操作数据成员要用-操作符;
对于像结构体,数组,联合等,操作数据成员要用.操作符。
28.类成员访问错误错误信息Infunctionintmain(),intA:
ageisprivatewithinthiscontext错误代码#includeusingnamespacestd;
A()age=0;
voidSetAge(intval)age=val;
intGetAge()returnage;
private:
intage;
/age是该类的私有成员,外部无法访问。
intmain()Aa;
coutage:
a.ageendl;
/此处的a.age改成a.GetAge()即可a.SetAge(23);
coutAge:
a.GetAge()endl;
system(PAUSE);
解决方案类的private成员不能被类外部访问,只能通过该类提供的访问该变量的内部函数来访问。
1414C+常见错误及解决方案29.函数返回类型错误错误信息Infunctionintmain():
classBinaryhasnomembernamedGetBt错误代码#include#includeusingnamespacestd;
classBinaryprivate:
bitsetbt;
public:
Binary()bt=0;
voidSetBt(intval)bt=val;
bitset&
GetBt()returnbt;
/此处返回值错误,应该是bitset;
intmain()Binaryb;
b.SetBt
(2);
coutb.GetBt()endl;
解决方案返回类型定义错误,此例中,GetBt的返回值bitset就定义错误,导致出现这一问题,在使用STL的时候,一定要注意定义。
在这里把bitset改成对应得bitset即可。
30参数引用类型不正确错误信息invalidinitializationofnon-constreferenceoftypestd:
string&
fromatemporaryoftypeconstchar*inpassingargument1ofvoidprintStr(std:
)错误代码#include1515C+常见错误及解决方案#includeusingnamespacestd;
voidprintStr(string&
str)coutstrendl;
intmain()stringtmp(hello);
printStr(tmp);
printStr(world);
/此处使用临时对象,导致错误system(PAUSE);
解决方案C+中像“world“这样的临时对象都是const类型的,而printStr的参数是一个std:
string的引用,所有只要不传递一个临时字符串都行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常见 错误 解决方案