十大编译错误及解析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

十大编译错误及解析错误(Error)Statementmissing;DeclarationsyntaxerrorUndefinedsymbol‘xxx’MisplacedelseCompoundstatementmissing}Redeclarationof“xxx”ConstantexpressionrequiredForstatementmissing;Toofewparameterincallto‘xxx’Casestatementmissing:LvaluerepuiredDividederror或divisionbyzero警告(warning)Codehasnoeffect。Statementmissing;单词解释:Statement:[‘steitmənt]n.【计算机】语句,计算机程序指令miss:[mis]v.漏掉遗失Statementmissing;解析:语句缺少分号;编译程序发现一表达式语句后面没有分号。注意是表达式语句。另外一般缺少分号的位置在提示位置的前一语句,因为C语言允许一条语句写在多行,所以编译器检查到当前行时并无法确定该条语句的“;”是否缺失,因为可能“;”被写在了下一行,所以它检查到下一行时发现没有以“;”结尾才会报错。错误范例:voidmain(){inta;a=3printf(“%d”,a);}报错位置DeclarationsyntaxerrorDeclaration:[dekləreiʃən]n.声明syntax:[‘sintæks]n.句法;句法规则Declarationsyntaxerror解析:声明出现语法错误;在源文件中,某个声明丢失了某些符号或有多余的符号。注意是声明部分,而一般情况下也是在声明部分末尾未加分号“;”。错误范例:voidmain(){intaa=3;printf(“%d”,a);}报错位置Undefinedsymbol‘xxx’Undefined:['ʌndi'faind]adj.不明确的,未下定义的symbol:['simbəl]n.符号,记号,代号Undefinedsymbol‘xxx’解析:符号‘xxx’未定义;标识符无定义,变量都是要先定义后使用的,若未定义就使用就会出现该错误,也可能是有定义,但引用处有拼写错误(即与定义的名字不相符)引起。错误范例1:voidmain(){a=3;printf(“%d”,a);}错误范例2:voidmain(){intabc;ab=3;printf(“%d”,abc);}报错位置报错位置MisplacedelseMisplaced:[mis'pleis]vt.把…放错位置Misplacedelse解析:else位置错;编译程序发现else语句缺少与之相匹配的if语句时此错误产生,最常导致该错误的原因是if子句后跟多个操作语句,但未用花括号括起来,另外还可能是由于else多余,还有可能由于多余的分号或漏写了大括号及前面的if语句出现语法错误引起的。错误范例:voidmain(){floatx;doubley;scanf(%f,&x);if(x3);y=sin(x);elseif(x==3)y=x;elsey=cos(2*x+1);printf(fun1(%.2f)=%.2f\n,x,y);getch();}报错位置Compoundstatementmissing}Compound:['kɔmpaund]adj.【语法学】(句子)复合的;(词)复合的Compoundstatementmissing}解析:复合语句漏掉}。通常由于花括号不配对引起的。注意:不能简单的在报错位置加一个“}”,就完事了,这样虽然可能可以编译成功,但其实大部分情况下都会改变你程序原来的意思。如下错误范例,报错位置在程序末尾,若简单的在其末尾处加上一花括号,想想程序变成什么意思了。正确的处理方式应是从报错位置往前仔细检查,看是哪个位置漏掉花括号。错误范例main(){floata,b,t;scanf(%f,%f,&a,&b);if(ab){t=a;a=b;b=t;printf(%.1f,%.1f\n,a,b);getch();}报错位置Redeclarationof“xxx”Redeclaration:[ri’dekləreiʃən]n.重复声明Redeclarationof“xxx”解析:“xxx”重定义;此标识已经定义过。即某个标识符被你重新定义了多次。在同一个函数里标识符只能被定义一次。一个标识符要是既被用来做为整型变量,也被用来做为实型变量,或数组名,你想计算机遇到这样一个标识符不是会晕倒。错误范例:main(){floata;inta[10];getch();}报错位置ConstantexpressionrequiredConstant:['kɔnstənt]n.数常数,常量Expression:[iks'preʃən]n.(数学)表达式required:[ri‘kwaiəd]vt.需要Constantexpressionrequired解析:要求常量表达式;数组定义时指定的数组大小必须是常量。错误范例:main(){intn=10;inta[n];getch();}报错位置Forstatementmissing;解析:for语句漏掉“;”。常由于写for语句是漏掉“;”,或将分号“;”写成了逗号“,”。错误范例:main(){intsum=0,i;for(i=1,i=5;i++)sum=sum+i;printf(“%d\n”,sum);}报错位置Toofewparameterincallto‘xxx’Parameter:[pə’ræmitə]n.〈物〉〈数〉参量,参数call:[kɔ:l]v.调用Toofewparameterincallto‘xxx’解析:调用函数‘xxx’时参数太少;调用指定的函数(该函数用一原形声明)时,给出的参数应与其要求的参数数量相匹配,不匹配时就会报错。错误范例:#includestdio.hvoidmain(){doublex;intn;doublefun(doublex,intn);scanf(%lf%d,&x,&n);printf(fun=%lf\n,fun(x,n));getch();}doublefun(doublex,intn){/**/doubley;if(n==0)y=1;elseif(n==1)y=x;elsey=((2*n-1)*x-fun(x)-(n-1)*fun(x))/n;returny;/**/}报错位置Casestatementmissing:解析:Case语句漏掉“:”错误范例:main(){intx,y;scanf(%d,&x);switch(x){case1y=1+x;break;case2:y=2*x;break;case3:y=x*x;break;default:y=x;}printf(x=%d,y=%d\n,x,y);}报错位置LvaluerepuiredLvalue:左值Lvaluerepuired解析:赋值请求;赋值运算符的左边必须是一个地址表达式,包括数值变量、指针变量、结构引用域、间接指针和数组元素。错误范例:voidmain{inta;3=a;}报错位置Dividederror或divisionbyzero解析:出现了被除数为0的情况.例:voidmain(){intx=0;printf(“%d”,5/x);出现被除数为0的情况}CodehasnoeffectCode:[kəud]n.【计算机】编码;编码程序;指令effect:[i'fekt]n.结果,效果,影响Codehasnoeffect解析:代码无效;当编译程序发现一个含有无效操作符的语句时,发出此警告。可能是由于其他错误引起。例如语句“a+b;”对每一个变量都不起作用,无需操作,且可能引起一个错误。警告范例1:#includestdio.hvoidmain(){intk;for(k=1,k5,k++)printf(&);}会有两个信息:warning:Codehasnoeffecterror:Forstatementmissing;警告报错位置警告范例2:#includestdio.hvoidmain(){intk=3;k=1/3*k;}警告原因:1/3肯定为0,因后面的*运算没什么用警告位置

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功