编译错误解析
Statement missing ; 1
Declaration syntax error 1
Undefined symbol ‘xxx’ 1
Misplaced else 2
Compound statement missing } 2
Redeclaration of“xxx” 2
Constant expression required 3
For statement missing ; 3
Too few parameter in call to ‘xxx’ 3
Case statement missing : 4
Lvalue repuired 4
Divided error 或 division by zero 4
Code has no effect 5
单词解释:
Statement missing ;
解析:语句缺少分号;编译程序发现一表达式语句后面没有分号。注意是表达式语句。
另外一般缺少分号的位置在提示位置的前一语句,因为C语言允许一条语句写在多行,所以编译器检查到当前行时并无法确定该条语句的“;”是否缺失,因为可能“;”被写在了下一行,所以它检查到下一行时发现没有以“;”结尾才会报错。
错误范例:
void main()
{ int a;
a=3
printf(“%d”,a); 报错位置
}
Declaration syntax error
解析:声明出现语法错误;在源文件中,某个声明丢失了某些符号或有多余的符号。注意是声明部分,而一般情况下也是在声明部分末尾未加分号“ ;”。
错误范例:
void main()
{ int a
a=3;
printf(“%d”,a); 报错位置
}
Undefined symbol ‘xxx’
解析:符号‘xxx’未定义;标识符无定义, 变量都是要先定义后使用的,若未定义就使用就会出现该错误,也可能是有定义,但引用处有拼写错误(即与定义的名字不相符)引起。
错误范例1:
void main()
{
a=3; 报错位置
printf(“%d”,a);
}
错误范例2:
void main()
{ int abc;
ab=3; 报错位置
printf(“%d”,abc);
}
Misplaced else
解析:else位置错; 编译程序发现else 语句缺少与之相匹配的if语句时此错误产生,最常导致该错误的原因是if子句后跟多个操作语句,但未用花括号括起来,另外还可能是由于else多余,还有可能由于多余的分号或漏写了大括号及前面的if语句出现语法错误引起的。
错误范例:
void main()
{
float x;
double y;
scanf("%f",&x);
if(x<3) ; y=sin(x); 报错位置
else if(x==3) y=x;
else y=cos(2*x+1);
printf("fun1(%.2f)=%.2f\n",x,y);
getch();
}
Compound statement missing }
解析:复合语句漏掉 } 。通常由于花括号不配对引起的。
注意:不能简单的在报错位置加一个“}”,就完事了,这样虽然可能可以编译成功,但其实大部分情况下都会改变你程序原来的意思。如下错误范例,报错位置在程序末尾,若简单的在其末尾处加上一花括号,想想程序变成什么意思了。正确的处理方式应是从报错位置往前仔细检查,看是哪个位置漏掉花括号。
错误范例
main( )编译器错误
{ float a,b,t;
scanf("%f,%f",&a,&b);
if( a>b)
{ t=a; a=b; b=t;
printf("%.1f,%.1f\n",a,b);
getch();
}
报错位置
Redeclaration of“xxx”
解析:“xxx”重定义;此标识已经定义过。 即某个标识符被你重新定义了多次。在同一个函数里标识符只能被定义一次。一个标识符要是既被用来做为整型变量,也被用来做为实型变量,或数组名,你想计算机遇到这样一个标识符不是会晕倒。
错误范例:
main( )
{ float a;
int a[10]; 报错位置
getch();
}
Constant expression required
解析:要求常量表达式;数组定义时指定的数组大小必须是常量。
错误范例:
main( )
{ int n=10;
int a[n]; 报错位置
getch();
}
For statement missing ;
解析:for语句漏掉“;”。 常由于写for语句是漏掉“;”,或将分号“;”写成了逗号“,”。
错误范例:
main()
{ int sum= 0,i;
for(i=1 , i<=5 ; i++) 报错位置
sum=sum + i;
printf(“%d\n”,sum);
}
Too few parameter in call to ‘xxx’
解析:调用函数‘xxx’时参数太少;调用指定的函数(该函数用一原形声明)时,给出的参数应与其要求的参数数量相匹配,不匹配时就会报错。
错误范例:
#include <stdio.h>
void main()
{
double x;int n;
double fun(double x,int n);
scanf("%lf%d",&x,&n);
printf("fun=%lf\n",fun(x,n));
getch();
}
double fun(double x,int n)
{ /**/
double y;
if(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 :
解析:Case语句漏掉 “:”
错误范例:
main( )
{ int x,y;
scanf("%d",&x);
switch(x)
{ case 1 y=1+x; break; 报错位置
case 2: y=2*x; break;
case 3: y=x*x; break;
default : y=x; }
printf("x=%d,y=%d\n",x,y);
}
Lvalue repuired
解析:赋值请求;赋值运算符的左边必须是一个地址表达式,包括数值变量、指针变量、结构引用域、间接指针和数组元素。
错误范例:
void main
{
int a;
3=a; 报错位置
}
Divided error 或 division by zero
解析:出现了被除数为0的情况.
例:
void main()
{
int x=0;
printf(“%d”,5/x); 出现被除数为0的情况
}
Code has no effect
解析:代码无效;当编译程序发现一个含有无效操作符的语句时,发出此警告。可能是由于其他错误引起。例如语句“a+b;”对每一个变量都不起作用,无需操作,且可能引起一个错误。
警告范例1:
#include<stdio.h>
void main()
{
int k;
for(k=1,k<5,k++) 警告报错位置
printf("&");
}
会有两个信息:
warning: Code has no effect
error: For statement missing ;
警告范例2:
#include<stdio.h>
void main()
{
int k=3;
k=1/3*k; 警告位置
}
警告原因:1/3肯定为0,因后面的*运算没什么用
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论