gpt4 book ai didi

c - 在 Swift 中获取指向 C 结构的指针

转载 作者:行者123 更新时间:2023-11-30 13:22:06 25 4
gpt4 key购买 nike

我正在转换 C 信号处理库以便在 Swift 中使用。

因此,我尝试编写测试,但对 vsip_vgetattrib_d 的调用失败,因为我没有获得指向 attr 的指针。

func testAttr(){
let v = Vector(length: 10, type: "d")
var attr: vsip_vattr_d
var attrPtr: UnsafeMutablePointer<vsip_vattr_d> = &attr
vsip_vgetattrib_d(v.vsip!,attrPtr)
print(attr)
}

在 C 语言中,这看起来像

vsip_vattr_d attr
vsip_vgetattrib_d(v,&attr)

attr 将填充正确的值。

注意我有一个解决方法。

以下工作正常

func testAttr(){
let v = Vector(length: 10, type: "d")
let attr: vsip_vattr_d = vsip_vattr_d(offset: v.offset, stride: v.stride, length: v.length, block: v.sBlock.vsip)
//vsip_vgetattrib_d(v.vsip!,attrPtr)
print(attr)
}

并打印:

vsip_vattr_d(offset: 0, stride: 1, length: 10, block: 0x000060000026f740)

但是这个问题会一次又一次地困扰我,所以我需要弄清楚如何创建一个指向 C 结构的指针,以便在需要时作为 inout 参数传递到我的函数中。

最佳答案

您可以传递 T 类型的(已初始化)变量作为 inout表达式(带有 & )到期望 UnsafeMutablePointer<T> 的函数,所以这应该有效:

func testAttr(){
let v = Vector(length: 10, type: "d")
var attr = vsip_vattr_d()
vsip_vgetattrib_d(v.vsip!, &attr)
print(attr)
}

关于c - 在 Swift 中获取指向 C 结构的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37664073/

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