linux开发error: invalid conversion from ‘long unsigned int’ to ‘void*’

linux系统编译
error: invalid conversion from ‘long unsigned int’ to ‘void*’
报错是什么意思怎么解决

img

read函数的原型如下:

#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);

这个报错的意思是,你将一个unsigned long结构转换成 void*时,转换失败了。
结合你的图片来看,是**read(fd[1],sizeof(c))这句使用错了,应该改为read(fd[1],&c,sizeof(c))**。

你好,这是你用sizeof去获取的整数类型,并不是read函数第二个参数要求的类型。
你第二个类型要定义一个用来读到数据的缓存指针,第三个参数才是你当前的sizeof函数。
如还存在问题请继续反馈。

以下答案引用自GPT-3大模型,请合理使用:

这个报错表明,你试图将一个长无符号整数(long unsigned int)转换为一个void指针(void*),而这是不允许的。这通常是由于传递给你的函数的参数应该是指针,而你传递的参数却是一个数字。

例如,如果某个函数以void*作为参数,它可能需要你传递一个指向记录或字符串的指针,但你却传递了一个表示字符串中字符的整数值,则可能出现类似的问题。

为了解决该问题,你需要找出传递给你的函数的参数的正确类型,并尝试使用该类型来代替传递的数字。

例如,如果你传递的参数是一个unsigned long,那么你可以在代码中使用一个指针来替换它,例如:

// Before passing the parameter
unsigned long param = 123;
myFunction(param); 

// After passing the parameter
unsigned long param = 123;
unsigned long *ptr = &param;
myFunction(ptr);

如果我的回答解决了您的问题,请采纳我的回答