C语言中一些小警告或错误及解决

1 篇文章 0 订阅
1 篇文章 0 订阅

写代码时间不长也不多,错误倒是见的五花八门了,经过这段时间的学习,简单总结一些些。
因为引起某些问题原因可能不一定是什么,而且经常报的错误经常和实际情况大相径庭,摸不着头脑(当然大部分是针对和本人差不多的小白而言的。。。)
所以,不一定适用每个人,择情而定。

1. warning: format '%d' expects type 'int *', but argument 2 has type 'int'

	警告:格式“%d”需要类型“int*”,但参数2的类型为“int
	解决:
	scanf 时,没有加&
	`scanf("%d",i);`应该改为 `scanf("%d",&i);`
	从scanf 语句的第二个参数开始,应该传入的是变量的地址,而不是变量名。
	
	这个问题我遇到的就比较基础了,但是因为学的还太少,所以在使用指针,结构体指针等等指针类变量时,有时会不知道加不加。。。

2. Warning] passing argument 1 of 'del' makes pointer from integer without a cast

	警告]传递'del'的参数1将使指针不带转换
	
	解决:
	使用数组传递数组时,传入形参错误,看一下传递数组时,是不是类型错了。

3. warning: assignment from incompatible pointer type [enabled by default]

	警告:来自不兼容指针类型的赋值[默认情况下启用
	
	解决:
	很有可能是因为返回值和正在接受这个指针类型名不相同,重点检查传递参数一边,和接收参数一边的类型,顺着传递路径一直找到定义上去。
	这个问题我还是比较经常遇到的,但是看几遍还是感觉没问题。很多时候都不知道怎么改,然而最后写着写着就没了,才发现哪里有问题。能力有限,就问题论问题。

4. each undeclared identifier is reported only once for each function it appears in

	对于每个未声明的标识符,它在其中出现的每个函数只报告一次
	
	解决:
	一般是头文件没添加

5. too few arguments to function

	函数参数太少

	解决:
		一般是参数不全或者应该传参数没传参,检查缺失位置加上参数就可以了

6. error: 'for' loop initial declarations are only allowed in C99 mode

	错误:只有在C99模式下才允许“for”循环初始声明
```c
for(int i=0; i<len; i++) {};//错误,这语法在gcc中是错误的,
//这是因为gcc基于c89标准,换成C99标准就可以在for循环内定义i变量
int i;
for(i=0;i<len;i++){};  //正确

``

虽然警告并不影响代码运行,但是对于像我这样的新手小白来说,一旦因为警告出现其他问题,尤其是段错误,是很棘手的。

能力一般,水平有限,写不出太复杂高深的东西。。。
如果您的问题得到了解决,我很荣幸。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值