有没有办法在最新的 Swift 3 快照中使用 C 可变参数函数?
Posted
技术标签:
【中文标题】有没有办法在最新的 Swift 3 快照中使用 C 可变参数函数?【英文标题】:Is there a way to use C variadic functions with the latest Swift 3 snapshot? 【发布时间】:2016-06-24 01:35:16 【问题描述】:ioctl
就是一个例子
error: 'ioctl' is unavailable: Variadic function is unavailable
Darwin.ioctl:2:13: note: 'ioctl' has been explicitly marked unavailable here
public func ioctl(_: Int32, _: UInt, _ varargs: Swift.Any...) -> Int32
当它从 C 中导入时,它似乎被正确标记为接受可变参数。
是这样吗?
为什么它会被明确标记为不可用? Swift 3.0 没有增加对此的支持吗?
【问题讨论】:
【参考方案1】:解决这个问题的唯一方法是在 C 中创建一个非可变参数的包装函数。但是,正在努力为 Darwin 中需要它的函数创建包装器,最近this commit 为 ioctl 添加了多个包装器。
要使用包装器,您需要一个至少与 6 月 22 日快照一样新的 swift 版本。确保您使用的是该工具链。
【讨论】:
以上是关于有没有办法在最新的 Swift 3 快照中使用 C 可变参数函数?的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 / 为啥快照视图中的快照在 iPhone 7 Plus 模拟器中显示为空白?