警告makes pointer without a cast 、return makes pointer from integer wiyhout a cast 和control reaches en

警告makes pointer without a cast 、return makes pointer from integer wiyhout a cast 和control reaches end of non-void function怎么修改

炒菜葱姜蒜先下锅,学习之前先讲个冷笑话:

往年十一和中秋都是分开过的,而今年十一和中秋在同一天过了。按理说十一7天假,中秋3天假。7+3=10,但是今年只有8天假。一天内节日的数量增加了,但是假期天数没有增加。这是为什么呢?(预知原因如何,且听文末分解,哈哈哈)

在用Linux系统进行C语言编译的时候,出现了多个警告提示,警告的内容如下:

有问题肯定先百度啊,一搜大家都说这个问题的原因之一是头文件没有包含完全警告的那个函数,加进去就OK了。于是我赶紧加上头文件。

报警告说的是pthread函数,于是在这三个头文件中开头声明了#include <pthread.h>

编译,没警告,OK,交差,关电脑,掏出手机,王者启动……

我以为我改好了,谁知太年轻。。。

“老师,我改好了,您看一下[笑脸]”(心里美滋滋,等待夸奖)

老师直接回我,你改个几把!。。。

 

于是又学到了一个新的命令:make clean

之前用的是make,在编译时第一次make会报警告,但后面就不会了。而make clean会将之前的编译结果删除,也就是说每次都会将所有警告显示出来。

第1、2两处报警告是相同的原因,我还专门百度这个是啥意思:

还是不懂,反正大概就是没有转换。所以我做了第一步:

第一步、在前面加了(int*

报警告如下:

看不懂,然后感觉事情不这么简单。这里分享一个解决问题的思路:像这种报警告甚至错误什么的,可以先查所用到的这个函数的具体用法,一定查仔细!各个参数一个都不能错。

查pthread_create()函数的用法:第四个参数要以地址的方式传进去。

修改如下:

第二步、在ith_1和ith_2前加取地址符

除了这两个地方,但凡用到process这个函数的,都要改,要改成传地址的形式传参,函数初始化参数列表里面该是指针就指针,后面用到这个值就解引用。

然后第三个警告就消失了。

接下来就是最后一处报警告的,我把return后面的括号删了:

还是报错,再分享一个解决问题的思路:某处出错,要找到与它对应的地方去看看。比如这里,我就翻到最前面函数定义的地方:

前面是void*,所以后面就不能返回数字1。我也不知道应该返回什么,反正我改成return NULL就没报警告了。

第三步、return 1改成return NULL;

总结:

哪里报警告,一看函数本身有没有用错(参数形式,值传递还是地址传递),二看对应的地方有没有错(return报警告就往函数开头找,看return的值是否与之对应)。本文第二处将值传递改为地址传递的时候比较麻烦,因为用到这个参数的地方可能不止一处,所以要每处都修改。

菜炒完出锅,冷笑话揭晓:因为加量不加价(假)

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值