解决warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

今天做线程的例程出现warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]的警告
编译结果:在这里插入图片描述
问题解决
step0 在网站https://stackoverflow.com/questions/9251102/warning-cast-to-pointer-from-integer-of-different-size-wint-to-pointer-cast查了相关问题虽然文中并没给出我要的答案但是受到启发.

step1 前面我在类里面定义int m_clientfd这里由于pthread_create函数的原因需要强制转换void *对于初学者来说类型的转来转去本来就容易晕.

step2 我们从这句警告入手warning: cast to pointer from integer of different size 警告的大概意思是整型和指针具有不同的大小,也就是说我的强制类型转换存在不同size的转换.

step3经过sizeof(void *) 和 sizeof(int)的输出它们的大小分别为8和4(不同的操作系统不一样)所以编译后才出现int 到 (void *)转换大小不匹配.

step4虽然上面的连接中给出了解决方案但我觉得都不太好,我的解决方式很简单就是把前面定义的int m_clientfd改为long m_clientfd 这样两者类型的大小都是8.再次编译完美解决.

step5在强制类型转换这一块,以后遇到类似的警告就可以首先从类型的大小转换开始考虑

  • 56
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值