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)
}