我正在尝试使用C ++为Microsoft Visual Studio 2013编译一个为linux编写的程序 (是C和C ++的混合(#include .h),我将用C ++转换所有内容,以免混淆!)
声明:ret->data = _malloc(ret->size + 8);
返回错误:
IntelliSense:“void *”类型的值无法分配给“unsigned char *”类型的实体
请帮助
答案 0 :(得分:2)
在c ++中,您需要明确地将void *
强制转换为目标poitner类型,以便修复代码
ret->data = static_cast<unsigned char *>(_malloc(ret->size + 8));
或,使用new
/ delete[]
ret->data = new unsigned char[ret->size + 8];
一些说明,
如果您稍后使用new
,则无法使用delete[]
/ realloc()
。
您可能需要将编译器更改为c编译器,因为这显然是c代码,而不是c ++。
问题可能是文件扩展名,如果您为文件提供.cpp
或.cxx
扩展名,它将被编译为c ++代码,因此将其更改为.c
并且它应该可以正常工作