[Error] invalid conversion from void* to char** [-fpermissive]
时间: 2023-12-25 18:03:16 浏览: 50
这个错误通常是因为你在进行指针类型转换时,将一个void指针转换成char类型指针的时候出现的。由于void指针可以指向任何类型的内存地址,而char类型指针只能指向字符类型的内存地址,所以这样的转换是不安全的。
要解决这个问题,你可以尝试使用正确的类型进行指针转换,或者使用C++中的reinterpret_cast来进行类型转换。另外,你也可以检查一下你的代码,看看是否存在其他类型转换错误。
相关问题
error: invalid conversion from ‘void*’ to ‘unsigned char*’ [-fpermissive] 279 | 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选项,这样可以让编译器更容易地兼容旧代码,但也可能会导致一些潜在的问题。
Compilation error: invalid conversion from 'void*' to 'const uint8_t*' {aka 'const unsigned char*'} [-fpermissive]
这个错误通常是由于类型不匹配引起的。在你的代码中,你试图将一个 `void*` 指针转换为一个 `const uint8_t*` 类型的指针,但是这种类型转换是不合法的。
你需要进行显式的类型转换,将 `void*` 指针转换为 `const uint8_t*` 类型的指针,例如:
```
const uint8_t* ptr = static_cast<const uint8_t*>(void_ptr);
```
其中 `void_ptr` 是你原来的 `void*` 指针。请注意,这种类型转换可能会导致数据损失或未定义的行为,因此需要谨慎使用。