《十大编译错误及解析.ppt》由会员分享,可在线阅读,更多相关《十大编译错误及解析.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、十大编译错误及解析 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望Statement missing;n n单词解释:n nStatement:steitmnt n.【计算机】语句,计算机程序指令 n nmiss:mis v.漏掉遗失 Statement missing;n n解析:语句缺少分号;编译程序发现一表达式解析:语句缺少分号;编译程序发现一表达式语句后面没有分号。注意是语句后面没有分号。注意是表达式语句表达式语句。n n另外一般缺少分号的位置在提示位置的
2、前一语另外一般缺少分号的位置在提示位置的前一语句,因为句,因为C C语言允许一条语句写在多行,所以编语言允许一条语句写在多行,所以编译器检查到当前行时并无法确定该条语句的译器检查到当前行时并无法确定该条语句的“;”“;”是否缺失,因为可能是否缺失,因为可能“;”被写在了下一被写在了下一行,所以它检查到下一行时发现没有以行,所以它检查到下一行时发现没有以“;”结尾才会报错。结尾才会报错。错误范例:错误范例:错误范例:错误范例:void main()int a;a=3 printf(“%d”,a);报错位置报错位置Declaration syntax errorn nDeclaration:dek
3、lrein n.声明n n syntax:sintks n.句法;句法规则Declaration syntax error n n解析:声明出现语法错误;在源文件中,某个声明丢失了某些符号或有多余的符号。注意是声明部分,而一般情况下也是在声明部分末尾未加分号“;”。错误范例:错误范例:错误范例:错误范例:void main()int a a=3;printf(“%d”,a);报错位置报错位置Undefined symbol xxxn nUndefined:ndifaind adj.不明确的,未下定义的n nsymbol:simbl n.符号,记号,代号Undefined symbol xxxn
4、 n解析:符号xxx未定义;标识符无定义,变量都是要先定义后使用的,若未定义就使用就会出现该错误,也可能是有定义,但引用处有拼写错误(即与定义的名字不相符)引起。错误范例错误范例错误范例错误范例1 1:void main()a=3;printf(“%d”,a);错误范例错误范例错误范例错误范例2 2:void main()int abc;ab=3;printf(“%d”,abc);报错位置报错位置报错位置报错位置Misplaced elsen nMisplaced:mispleisvt.把放错位置Misplaced elsen n解析:解析:elseelse位置错;位置错;编译程序发现编译程序
5、发现else else 语句缺少与之相匹语句缺少与之相匹配的配的if if语句语句时此错误产生,时此错误产生,最常导致该错误的原因是最常导致该错误的原因是if if子子句后跟多个操作语句,但未用花括号括起来句后跟多个操作语句,但未用花括号括起来,另外还可,另外还可能是由于能是由于elseelse多余,还有可能由于多余的分号或漏写了多余,还有可能由于多余的分号或漏写了大括号及前面的大括号及前面的if if语句出现语法错误引起的。语句出现语法错误引起的。错误范例:void main()float x;double y;scanf(%f,&x);if(xb)t=a;a=b;b=t;printf(%.
6、1f,%.1fn,a,b);getch();报错位置报错位置Redeclaration of “xxx”n nRedeclaration:rideklrein n.重复声明Redeclaration of“xxx”n n解析:解析:“xxx”“xxx”重定义;此标识已经定义过。重定义;此标识已经定义过。即即某个标识符被你重新定义了多次。在同一个函数某个标识符被你重新定义了多次。在同一个函数里标识符只能被定义一次。一个标识符要是既被里标识符只能被定义一次。一个标识符要是既被用来做为整型变量,也被用来做为实型变量,或用来做为整型变量,也被用来做为实型变量,或数组名,你想计算机遇到这样一个标识符不是
7、会数组名,你想计算机遇到这样一个标识符不是会晕倒。晕倒。错误范例:main()float a;int a10;getch();报错位置报错位置Constant expression requiredn nConstant:knstntn.常数,常量n nExpression:ikspren n.(数学)表达式n nrequired:rikwaid vt.需要Constant expression required n n解析:要求常量表达式;数组定义时指定的数组大小必须是常量。错误范例:main()int n=10;int an;getch();报错位置报错位置For statement mi
8、ssing;n n解析:for语句漏掉“;”。常由于写for语句是漏掉“;”,或将分号“;”写成了逗号“,”。错误范例:错误范例:错误范例:错误范例:main()main()int sum=0,i;int sum=0,i;for(i=1 for(i=1,i=5;i+)i=5;i+)sum=sum+i;sum=sum+i;printf(“%dn”,sum);printf(“%dn”,sum);报错位置报错位置Too few parameter in call to xxxn nParameter:prmitn.物数参量,参数n ncall:k:lv.调用Too few parameter in
9、call to xxxn n解析:调用函数解析:调用函数xxxxxx时参数太少;时参数太少;调用指定的函数(该调用指定的函数(该函数用一原形声明)函数用一原形声明)时,给出的参数应与时,给出的参数应与其要求的参数数量相其要求的参数数量相匹配,不匹配时就会匹配,不匹配时就会报错。报错。错误范例:#include void main()double x;int n;double fun(double x,int n);scanf(%lf%d,&x,&n);printf(fun=%lfn,fun(x,n);getch();double fun(double x,int n)/*/double y;i
10、f(n=0)y=1;else if(n=1)y=x;else y=(2*n-1)*x-fun(x)-(n-1)*fun(x)/n;return y;/*/报错位置报错位置Case statement missing:n n解析:Case语句漏掉“:”错误范例:错误范例:错误范例:错误范例:main()main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);switch(x)switch(x)case 1 y=1+x;break;case 1 y=1+x;break;case 2:y=2*x;break;case 2:y=2*x;break;case 3:
11、y=x*x;break;case 3:y=x*x;break;default:y=x;default:y=x;printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);报错位置报错位置Lvalue repuiredn nLvalue:左值Lvalue repuiredn n解析:赋值请求;赋值运算符的左边必须是一个地址表达式,包括数值变量、指针变量、结构引用域、间接指针和数组元素。错误范例:void main int a;3=a;报错位置报错位置Divided error 或或 division by zero n n解析:出现了被除数为0的情况.n n例:v
12、oid main()int x=0;printf(“%d”,5/x);出现被除数为0的情况Code has no effectn nCode:kudn.【计算机】编码;编码程序;指令n neffect:ifektn.结果,效果,影响Code has no effect n n解析:代码无效;当编译程序发现一个含有无解析:代码无效;当编译程序发现一个含有无效操作符的语句时,发出此警告。可能是由于效操作符的语句时,发出此警告。可能是由于其他错误引起。例如语句其他错误引起。例如语句“a+b;”“a+b;”对每一个变对每一个变量都不起作用,无需操作,且可能引起一个错量都不起作用,无需操作,且可能引起一个错误。误。警告范例1:#includevoid main()int k;for(k=1,k5,k+)printf(&);会有两个信息:warning:Code has no effectCode has no effect error:For statement missing;For statement missing;警告报错位置警告报错位置警告范例2:#includevoid main()int k=3;k=1/3*k;警告原因:1/3肯定为0,因后面的*运算没什么用警告位置警告位置