uint8_t *bufferPtr=NULL;
size_t bufferPtrSize=0;
bufferPtr=malloc(bufferPtrSize * sizeof(uint8_t))
我在File1.m中使用了相同的代码它工作正常。当我在File2.mm上使用它时,它给出了assigning to 'uint8_t *' (aka 'unsigned char *' ) from incompatible type 'void *'
错误。
答案 0 :(得分:4)
这是因为.mm
文件不被视为普通的Objective-C文件而是Objective-C ++文件,因此C ++的类型规则适用于此处。在C ++中,如果你决定有一个类型(在这种情况下你有一个void指针)然后想要另一个类型(在你的情况下是一个char指针),那么你必须显式地转换它们。执行此操作的方法是static_cast<T>()
,其中T
是目标类型。即:uint8_t *bufferPtr = static_cast<uint8_t *>(malloc(bufferPtrSize * sizeof(uint8_t)));