1
 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 *'错误。

4

1 回答 1

4

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

于 2012-11-16T11:51:03.453 回答