我正在尝试在 Microsoft visual studio 2013 on C++ 上编译一个为 linux 编写的程序 (是 C 和 C++ 的混合体 (#include .h),我将全部转换为 C++,以免混淆!)
声明:
ret->data = _malloc(ret->size + 8);
返回错误:
IntelliSense: a value of type "void *" cannot be assigned to an entity of type "unsigned char *"
请帮忙
最佳答案
在 C++ 中,您需要显式地将 void *
转换为目标指针类型,以便修复您的代码
ret->data = static_cast<unsigned char *>(_malloc(ret->size + 8));
或者,使用new
/delete[]
ret->data = new unsigned char[ret->size + 8];
一些笔记,
如果稍后要使用
realloc()
,则不能使用new
/delete[]
。您可能需要将编译器更改为 c 编译器,因为那显然是 c 代码,而不是 c++。
可能是文件扩展名的问题,如果你给文件一个 .cpp
或 .cxx
扩展名,它将被编译为 c++ 代码,所以将它更改为 .c
它应该可以工作。
关于c++ - ret->data = _malloc(ret->size + 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31104914/