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 *'
错误。
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 *'
错误。
这是因为.mm
文件不被视为普通的 Objective-C 文件,而是被视为 Objective-C++ 文件,因此此处适用 C++ 的类型规则。在 C++ 中,如果您决定拥有一个类型(在这种情况下您有一个 void 指针)然后想要另一种类型(在您的情况下是一个 char 指针),那么您必须显式地转换它们。这样做的方法是目标类型static_cast<T>()
在哪里。T
IE:uint8_t *bufferPtr = static_cast<uint8_t *>(malloc(bufferPtrSize * sizeof(uint8_t)));