首页 > C程序:error: cast to 'void *' from smaller integer type 'int'

C程序:error: cast to 'void *' from smaller integer type 'int'

代码如下:

for (i = 0; i < nthreads; i++)
{
    nodes[i] = (int**)realloc(nodes[i], (sizeof(int *)*lnpages[i]));
    pthread_create(&threads[i], NULL, worker, (void *)i);
}

编译器报错是 (void *)i 处,错误说明是 Error: cast to 'void *' from smaller integer type 'int'

PS: 这是在我上传到远程服务器时构建产生的错误,在我本机UBUNTU使用CLANG3.5编译没有任何问题,我在本机使用的构建命令是 clang -O0 -std=gnu11 -march=native -lm -lpthread pagerank.c -o pagerank,能成功构建。

现在就是不清楚远程服务器使用的是什么编译器,这个错误可能由于什么造成,怎么样修改能最大可能兼容。


你的本意是把i传到线程函数里,相信你传进去也不会做指针使用。因此从你的角度上来讲,这没有错。
但是编译器不知道你的i变为指针的目的,它只是忠实得检查数据而已。
最好的办法如@白一梓所说,你直接传指针进去,到函数里再拿出来就ok了。
如果不愿意这样的话,我想你可以传(void *)(long)i进去


(void *)&i

【热门文章】
【热门文章】