C中的铸造问题

时间:2013-12-09 21:14:57

标签: c multithreading casting pthreads

我收到此错误:赋值从整数中生成指针而不进行强制转换。我正在使用线程。

这就是我在做的事情:

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。

但它不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

如果要从线程函数返回单个数字(ptr个点),请使用

unsigned long result = *((unsigned long *) ptr);

如果要返回指向unsigned long数组的指针,请使用

unsigned long *result = ptr;

答案 1 :(得分:0)

它应该是这样的:

result = (unsigned long *) ptr;