错误:从'void *'到'const uint8_t * {aka const unsigned char *}'的无效转换'[-fpermissive]

时间:2018-08-18 17:10:35

标签: c++ casting malloc

我正在尝试将C库导入我的C ++项目中,但是我被这个错误所困扰

  

从'void *'到'const uint8_t * {aka const unsigned char *}'的无效转换'[-fpermissive]     uint8_t const * raw = static_cast(getPointerToData(id,message-> data,message-> length));                                                                                                   ^   编译由于-Wfatal-errors而终止。

此代码可以使用C编译器很好地编译,但是使用C ++一个可以得到此错误

iglob()

你能帮我吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您需要将返回值从getPointerToData显式转换为const uint8_t*。指针类型之间的隐式转换在C ++中是不允许的,但在C中是不允许的。

尝试:

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

编辑: 如果要保留C代码而不是C ++,也可以使用C样式强制转换。

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

答案 1 :(得分:0)

Jean-FrançoisFabre发布的此代码

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

谢谢!