我正在转换一个用于Swift的C信号处理库。
所以我正在尝试编写测试但是对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(偏移量:0,步幅:1,长度:10,块:0x000060000026f740)
但是这个问题会一次又一次地咬我,所以我需要弄清楚如何在需要时将指向C结构的指针作为inout参数传递给我的函数。
答案 0 :(得分:0)
您可以传递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)
}