error: invalid conversion from ‘void*’ to ‘unsigned char*’ [-fpermissive] 279 | tmp = realloc(*pc->pbufout, newlen);
时间: 2024-02-18 20:03:44 浏览: 57
这个错误是因为在C语言中,`realloc`函数返回的是 `void*`类型的指针,需要进行类型转换才能赋给其他类型的指针。你可以将这行代码改为:
```c
tmp = (unsigned char*) realloc(*pc->pbufout, newlen);
```
这样就可以将`void*`类型的指针转换为`unsigned char*`类型的指针了。
相关问题
unsigned char* tmp; tmp = realloc(*pc->pbufout, newlen); if (!tmp) return 1;报错信息是error: invalid conversion from ‘void*’ to ‘unsigned char*’ [-fpermissive] 250 | unsigned char* tmp = realloc(*pc->pbufout, newlen);
这个错误提示的原因是realloc函数返回的是void*类型的指针,需要进行强制类型转换才能赋值给unsigned char*类型的指针。
你可以将realloc函数返回的指针先赋值给void*类型的变量,然后再进行强制类型转换,示例代码如下:
```
void* tmp = realloc(*pc->pbufout, newlen);
if (tmp == NULL) {
// 处理内存分配失败的情况
} else {
*pc->pbufout = (unsigned char*)tmp;
}
```
这样就可以避免编译器报错了。另外,建议开启-fpermissive选项,这样可以让编译器更容易地兼容旧代码,但也可能会导致一些潜在的问题。
[Error] invalid conversion from void* to char** [-fpermissive]
这个错误通常出现在将一个 `void*` 类型的指针转换为 `char**` 类型指针时。这是因为 `void*` 指针可以指向任何类型的数据,而 `char**` 指针只能指向字符型的指针数组。
如果你需要将 `void*` 指针转换为 `char**` 指针,可以使用强制类型转换。例如:
```
void* ptr;
char** cptr = (char**)&ptr;
```
但是需要注意的是,这种类型转换可能会导致未定义的行为,因为 `void*` 指针和 `char**` 指针的内存布局可能不同。所以在进行这种类型转换时,需要确保类型转换是安全的。
阅读全文