C语言编译器常见错误

   在日常使用Dev c++编译器过程中,会遇到各种样的编译错误,在这篇文章中进行总结,以便以后再次遇到,持续更新!!!

一、expected declaration or statement at end of input

  1. 某一个函数或者变量没有在使用之前声明。
   2. 某个地方少了个括号。(并不一定是编译器指出错误的地方,这种情况,编译器一般会在最后一行代码报错,但错误很可能不在最后一行,要靠自己去找出来)

二、expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘<’ toke

   1.原因:用gcc编译cpp文件。解决:用g++编译cpp文件
注:用Makefile很容易误用gcc的,类似问题遇到过无数次……还有连接的时候也是,有些版本的make喜欢用gcc连接,直接挂掉。我通常都在头部加一句CC=g++ CFLAGS=-x c,感觉挺好用。
  2.原因:包含头文件时缺少“#”或者函数“{”与“}”没有成对的出现
  3.原因:新加的内容与头文件冲突
注:error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘XXX’,如果XXX是类名,那么几乎可以肯定地说是你的C文件里包含了C++头文件。楼主遇到的正是这个问题。建议不要使用10楼的方法。最好的方法是,不要去包含c++头文件!如果你的C文件要用到类,干脆直接将C文件改成CPP文件得了。缺少标点符号和全半角的提示是不一样的。
  4.tyepdef int (*psum)(int,int);
typedef拼写错误,如上,报的错误: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘int’

三、incompatible type for argument 1 of ‘StatusList_Sq‘

  一般是因为被调用函数的形参对象应该是数组名,而不应该是数组
  argument 和parameter 一样,都是函数的参数。
  parameter是指函数定义中参数,而argument指的是函数调用时的实际参数。

四、 invalid initializer

  英文翻译:无效的初始值设定
  变量和赋值的数据,两者之间的数据类型不匹配

五、expected identifier or ‘(’ before***

  直译:错误:在’=‘这个记号之前期待着有标识符或者’('。
  解决方案:
  1.主函数()的后面不能加分号,调用函数的()后面也不能加分号…
    比如

#incluede<stdio.h>
main()
{
int x,y,z;
scanf("%d,%d",&x,&y);
z=area(x,y);
printf(“area is %d\n”,z);
}

int area(int a,int b);
{
int c;
c=a*b;
return ©;
}

  上面的例子就会出现那样的结果,把int area(int a,int b)后面的分号去了 就对了!因为他是调用函数。
  2.代码里有未被识别的字符,将那段字符注释掉就可以了
  3.我上个语句以 ,结尾的,改成 ;即可

六、error:too few arguments to function

  意思:函数参数调用错误;
  分析:调用 时参数多了或者少了;
  改了就ok

七、 [Error] ld returned 1 exit status

  这样的报错,但却没有显示报错地址(即在哪一行报错);
  分析:
  1.程序没有主函数
  2.printf/scanf书写错误
  3在主函数中出现自定义函数名书写错误(即出现在主函数前未出现的自定义函数)
  4当自定义函数只进行了声明,主函数便进行调用
  5上一个运行结果未关闭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指针不指南吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值