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