编译错误解析
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,因后面的*运算没什么用