![](/img/trans.png)
[英]Assigning to 'NSUInteger *' (aka 'unsigned long *') from incompatible type 'const uint8_t *const' (aka 'const unsigned char *const')
[英]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.