有没有办法在最新的 Swift 3 快照中使用 C 可变参数函数?

Is there a way to use C variadic functions with the latest Swift 3 snapshot?

其中一个例子是 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 不支持这个吗?

解决这个问题的唯一方法是在 C 中创建一个非可变参数的包装函数。然而,正在努力为 Darwin 中需要它的函数创建包装器,最近 this commit 为 ioctl 添加了多个包装器。

要使用包装器,您的 swift 版本至少要与 6 月 22 日的快照一样新。确保您使用的是该工具链。