开发者社区> 问答> 正文

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,能成功构建。

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

展开
收起
a123456678 2016-06-08 14:57:37 9110 0
1 条回答
写回答
取消 提交回答
  • 你的本意是把i传到线程函数里,相信你传进去也不会做指针使用。因此从你的角度上来讲,这没有错。
    但是编译器不知道你的i变为指针的目的,它只是忠实得检查数据而已。
    最好的办法如@白一梓所说,你直接传指针进去,到函数里再拿出来就ok了。
    如果不愿意这样的话,我想你可以传(void *)(long)i进去

    2019-07-17 19:32:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Tracking-Ransomware-End-To-End 立即下载
dellemc-streaming_data_platform_final_compressed 立即下载
低代码开发师(初级)实战教程 立即下载