gpt4 book ai didi

c - 最新测试版中的 Swift C void* 和 void** 指针 (4)

转载 作者:搜寻专家 更新时间:2023-10-31 08:03:33 26 4
gpt4 key购买 nike

在以前的测试版中,我能够将指向任何东西的指针传递给 C 做这样的事情

var aString : NSString = "This is a string" // create an NSString
var anUnmanaged = Unmanaged.passUnretained(aString) // take an unmanaged pointer
var opaque : COpaquePointer = anUnmanaged.toOpaque() // convert it to a COpaquePointer
var mut : CMutablePointer = &opaque // this is a CMutablePointer
doSomething(mut) // pass the pointer to an helper function written in C

像这样的 C 函数:

void doSomething(void ** ptr)
{
// do something with the pointer, change it and make it point to another nsstring for example
}

现在,(肯定在 Beta4 中,甚至可能在 Beta3 中)从 C 到 Swift 的语法已经改变

之前,doSomething 函数需要一个 CMutablePointer(现在已从 Swift 中删除)现在,它期望:

UnsafePointer<UnsafePointer<()>>

() 是 Void 的类型别名

所以,从句法上讲就更清楚了。但是,现在我无法理解如何像我在以前的测试版中那样获取任何对象的 void** 指针。

有什么建议吗?

最佳答案

这对我有用:

var str = "Hello, playground"
var p: UnsafePointer<Void> = unsafeAddressOf(str)

关于c - 最新测试版中的 Swift C void* 和 void** 指针 (4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com