今天做线程的例程出现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在强制类型转换这一块,以后遇到类似的警告就可以首先从类型的大小转换开始考虑

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐