繁体   English   中英

从不兼容的类型'void *'分配'uint8_t *'(又名'unsigned char *')

[英]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 *'错误中assigning to 'uint8_t *' (aka 'unsigned char *' ) from incompatible type 'void *'

这是因为.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)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM