我收到此错误:赋值从整数中生成指针而不进行强制转换。我正在使用线程。
这就是我在做的事情:
void *calculate(void *arg) {
unsigned long *array;
.....
return array;
}
int main() {
unsigned long *result;
void *ptr;
...
p_thread_create(...);
p_thread_join(td, &ptr);
...
result = *((unsigned long *) ptr); /* This is the line where my error occurs */
return 0;
}
calculate函数返回unsigned long类型的数组。线程的返回值存储在void指针中,因为它是void我将它转换为* unsigned long。
但它不起作用。
有什么想法吗?
答案 0 :(得分:3)
如果要从线程函数返回单个数字(ptr
个点),请使用
unsigned long result = *((unsigned long *) ptr);
如果要返回指向unsigned long
数组的指针,请使用
unsigned long *result = ptr;
答案 1 :(得分:0)
它应该是这样的:
result = (unsigned long *) ptr;