C const void*Swift中的参数:数据?。带unsafebytes和UnsafeRawPointer
我试图将C const void*Swift中的参数:数据?。带unsafebytes和UnsafeRawPointer,c,swift,unsafe-pointers,C,Swift,Unsafe Pointers,我试图将数据?中包含的字节传递给C函数。C函数声明如下: void func(const void *buffer); 我的雨燕看起来像: myData?.withUnsafeBytes { (buffer: UnsafeRawPointer) in func(buffer) } 但是,这会导致一个错误: Cannot convert value of type '()' to closure result type '_' 如果我将unsafeawpointer更改为Unsafe
数据?
中包含的字节传递给C函数。C函数声明如下:
void func(const void *buffer);
我的雨燕看起来像:
myData?.withUnsafeBytes { (buffer: UnsafeRawPointer) in
func(buffer)
}
但是,这会导致一个错误:
Cannot convert value of type '()' to closure result type '_'
如果我将unsafeawpointer
更改为UnsafePointer
,则代码将生成,但我会收到一条警告:
UnsafePointer<Void> has been replaced by UnsafeRawPointer
UnsafePointer已被UnsafeRawPointer替换
解决这一问题的正确方法是什么?因为您可以将任何数据指针传递给使用
void*
参数,此问题可以通过
myData?.withUnsafeBytes { (buffer: UnsafePointer<Int8>) in
myfunc(buffer)
}
或
有趣的是,该类型被推断为UnsafePointer
,没有
任何警告。谢谢!这是有道理的,我应该试试看myself@MartinR祝贺300k:)@craig65535:有一个更简单的解决方案,请参阅更新。
myData?.withUnsafeBytes { (buffer) in
myfunc(buffer)
}
myData?.withUnsafeBytes {
myfunc($0)
}