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

ahy*_*dev 5 ioctl swift swift3

一个例子是 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
Run Code Online (Sandbox Code Playgroud)

当它从C导入时,它似乎被正确标记为接受varargs.

是这样的吗?

为什么它会被明确标记为不可用?Swift 3.0不支持这个吗?

ahy*_*dev 2

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

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