有没有办法在最新的 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 模拟器中显示为空白?

在 Swift 3 中包含字典的 Firebase 进程子快照

将 Firebase 快照投射到 Swift 3 对象

有没有办法在swift 3中平滑对象/模型?

Swift Firebase 快照查询缺少孩子

Cassandra 全局快照