C++ pthread_exit()抛出警告:从不同大小的整数转换为指针[-Wint到指针转换]警告

C++ pthread_exit()抛出警告:从不同大小的整数转换为指针[-Wint到指针转换]警告,c++,c,casting,type-conversion,pthread-exit,C++,C,Casting,Type Conversion,Pthread Exit,我一直在学习pthread库,并创建了一个简单的代码来乘以两个数字,但是我无法摆脱这个警告。 附:代码运行良好 #include <stdio.h> #include <pthread.h> struct numbers { int num1,num2; }; void *mult(void *param) { struct numbers *data = param; int res = data->num1 * data->num2;

我一直在学习pthread库,并创建了一个简单的代码来乘以两个数字,但是我无法摆脱这个警告。 附:代码运行良好

#include <stdio.h>
#include <pthread.h>

struct numbers {
   int num1,num2;
};

void *mult(void *param) {
   struct numbers *data = param;
   int res = data->num1 * data->num2;
   pthread_exit((void *)res);
}

int main(){

   pthread_t tid;
   struct  numbers n;
   n.num1 = 2;
   n.num2 = 3;
   pthread_create(&tid, NULL,mult, (void*)&n);
   int res;
   pthread_join(tid, (void *)&res);
   printf("%d\n",(int)res);
   return 0;
}
如有任何见解,将不胜感激。

pthread_exit((void *)res);


在原始发布的代码中,
res
是自动的;请参阅注释部分,了解不要这样做,这是完全错误的。如果幸运的话,你的程序会出错;但通常这只是传播无效数据。@mevets是正确的。我以前尝试过您的解决方案,虽然它为我们提供了一个错误的答案,但它消除了警告。如果您包括
,请将res更改为
intptr\t
;它应该关闭你的编译器。你的编译器只是一个小角色。
pthread_exit((void *)res);
pthread_exit((void *)&res);