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

今天做线程的例程出现warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]的警告编译结果:问题解决0 在网站https://stackoverflow.com/questions/9251102/warning-cast-to-pointer-from-integer-of-differe...
在多线程编程中使用 thread_start(pthread_t * thread_id, THREAD_BODY * thread_workbody, void *thread_arg);  创建子线程时因为最后一个参数需要是指向子线程的文件描述符(int类型)的指针,因此调用时我们会将文件描述符强转为(void *)类型,可能是系统不同的原因在int类型强转为void类型指针会出现:
警告 warning : cas t to point er from integer of diff erent size [- Win t-to- point er - cas t] void *tfn(void *arg) int i; i = (int)arg; sleep(i); //通过i来区别每个线程 printf(“I’m %dth thread, Thread_ID = %lu\n”, i+1, pthread_self()); return NULL; int main(int arg
warning : cas t to point er from integer of diff erent size [- Win t-to- point er - cas t]错误
今天在编写多线程程序的时候,编译过程中出现了如下错误: thread.c: In function ‘main’: thread.c:38:57: warning : cas t to point er from integer of diff erent size [- Win t-to- point er - cas t] 后来google了,受这个问题 解决 的启发http://stackov er flow.
将int变量转为(void*)时出现错误 er ror: cas t to point er from integer of diff erent size [-W er ror=int-to- point er - cas t] 这是由于int类型为32位,指针为long long 64位 解决 方法:(void*)(intptr_t)...
解释一下和这个报错 warning : cas t to point er from integer of diff erent size [- Win t-to- point er - cas t]
警告 warning : cas t from point er to integer of diff erent size [-W point er -to-int- cas t] int *ret[5]; printf("-------%d 's ret = %d\n", i, (int)ret[i]); 出现类型转换警告 printf("-------%d 's ret = %ld\n", i,(intptr_t )(int *)ret[i]); 【最新原创毕设】基于Express的线上教育系统+28282(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案