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上一个运行结果未关闭

  • 14
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: "b'incompatible type for argument 2 of'" 的意思是:第二个参数的类型不兼容。这通常出现在编程语言中,表示传递给函数或方法的参数类型与所接受的参数类型不匹配,导致无法执行该函数或方法。要解决此问题,需要检查参数类型并确保其与所需类型匹配。 ### 回答2: 这个错误信息出现在Java编程过程中,通常表示方法调用时传递的参数类型不匹配。其中“argument 2”表示第二个参数不匹配类型,可能传递的是错误的数据类型。 例如,如果一个方法需要传递一个整数参数,但你传递了一个字符串类型的参数,那么编译器就会报“incompatible type for argument 2 of”的错误信息。 这种问题通常可以通过检查方法定义和调用处传递的参数类型来解决。如果变量类型不匹配,可以尝试将其转换为正确的类型。也可以检查方法定义中参数的顺序,确保正确的参数传递到正确的位置。 除了方法调用时的参数类型不匹配,还可能有其他情况造成“incompatible type”错误,比如变量类型不兼容、返回值类型错误等。这些错误都可以通过仔细检查代码来解决,确保变量、方法、返回值等都正确匹配。在编写代码时,要注意数据类型的一致性,可以减少这种错误的发生。 ### 回答3: "incompatible type for argument 2 of" 这个错误信息通常会出现在编程语言中,是因为函数或方法传入的实际参数类型与函数或方法定义时的参数类型不匹配。 例如,如果一个函数定义为接受整数类型的参数,但是你传入了一个字符串类型的参数,那么就会出现 "incompatible type for argument 2 of" 的错误信息。 这种错误可能是因为代码中的缺陷或错误导致的,也可能是因为代码逻辑错误所导致的。通常我们可以通过检查代码并比较函数或方法的参数列表来解决这种问题。 如果出现这种错误信息,我们需要先检查实际参数类型和定义参数类型是否匹配。如果不匹配,需要更改实际参数类型,或者更改函数或方法的定义参数类型。如果需要传递不同类型的参数,需要查看函数或方法是否具有重载,如果有,则可以选择另一个重载来传递该参数。 总之,解决"incompatible type for argument 2 of"这种错误最关键的就是要仔细检查代码并排除代码中的错误和缺陷,确保参数类型定义与实际参数类型匹配,以避免发生此类错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

指针不指南吗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值