C++ 错误:从';void*';至';常量uint8{aka const unsigned char*}';[-fpermissive]

C++ 错误:从';void*';至';常量uint8{aka const unsigned char*}';[-fpermissive],c++,casting,malloc,C++,Casting,Malloc,我试图将C库导入到C++项目中,但是我被这个错误卡住了。 从“void*”到“const uint8_t*{aka const unsigned char*}”的转换无效[-fppermissive] uint8_t const*raw=static_cast(getPointerToData(id,message->data,message->length)); ^ 编译因-Wfatal错误而终止 此代码使用C编译器编译良好,但使用C++一个< /P>获得此错误 bool XbusMessag

我试图将C库导入到C++项目中,但是我被这个错误

卡住了。 从“void*”到“const uint8_t*{aka const unsigned char*}”的转换无效[-fppermissive] uint8_t const*raw=static_cast(getPointerToData(id,message->data,message->length)); ^ 编译因-Wfatal错误而终止

<>此代码使用C编译器编译良好,但使用C++一个< /P>获得此错误
bool XbusMessage_getDataItem(void* item, enum XsDataIdentifier id, struct XbusMessage const* message)
{
uint8_t const* raw = (getPointerToData(id, message->data, message->length));
你能帮我吗


谢谢

您需要显式地将返回值从getPointerToData强制转换为
const uint8\u t*
。C++中不允许指针类型之间隐式转换,但在C.< 尝试:


此代码由Jean-François Fabre作品发布

uint8_t const* raw = (getPointerToData(id, static_cast<const uint8_t*>(message->data), message->length));
uint8_t const*raw=(getPointerToData(id,static_cast(message->data),message->length));

谢谢

太快了!感谢您的回答,但它仍然不起作用:错误:从'void*'到'const uint8_t*{aka const unsigned char*}'[-fppermissive]uint8_t const*raw=static_cast(getPointerToData(id,message->data,message->length))的转换无效; ^ 编译因-Wfatal错误而终止。我已更新我的答案。尝试改用C样式转换。不过,getPointerToData的一个参数似乎也需要强制转换。静态铸造应该很好,但不太好。我用Jean-François Fabre的回答解决了这个问题,谢谢!您可能需要
static\u cast(消息->数据)
。你没有对你的函数的所有结构显示出一个正确的答案。成功了!谢谢
 uint8_t const* raw = (uint8_t const*)(getPointerToData(id, message->data, message->length));
uint8_t const* raw = (getPointerToData(id, static_cast<const uint8_t*>(message->data), message->length));