Swift 3.2-编译器不';不要让我使用Darwin.kevent全局函数

Swift 3.2-编译器不';不要让我使用Darwin.kevent全局函数,swift,swift3.2,Swift,Swift3.2,这在Swift 3.1中起作用,但一旦我切换到Xcode 9,它就停止编译。下面是一个示例代码: let kq: Int32 = 0 let changelist: UnsafePointer<kevent>! = nil let nchanges: Int32 = 0 let eventlist: UnsafeMutablePointer<kevent>! = nil let nevents: Int32 = 0 let timeout: UnsafePointer&l

这在Swift 3.1中起作用,但一旦我切换到Xcode 9,它就停止编译。下面是一个示例代码:

let kq: Int32 = 0
let changelist: UnsafePointer<kevent>! = nil
let nchanges: Int32 = 0
let eventlist: UnsafeMutablePointer<kevent>! = nil
let nevents: Int32 = 0
let timeout: UnsafePointer<timespec>! = nil
Darwin.kevent(kq, changelist, nchanges, eventlist, nevents, timeout)
我甚至尝试将所有参数声明为局部变量(如在示例代码中),以确保没有类型推断会导致函数调用不正确,从而导致编译器认为我想要使用结构。不走运

有人知道这个“重载”问题的解决方案吗?

我不能告诉你为什么完全限定的函数名不能用Swift 3.2编译,但是

kevent(kq, changelist, nchanges, eventlist, nevents, timeout)
没有达尔文前缀编译没有问题(使用Xcode 9 GM、Swift 3.2和Swift 4进行测试)

我可以证实这一点

Darwin.kevent(kq, changelist, nchanges, eventlist, nevents, timeout)
使用Swift 3.1(Xcode 8.3.3)编译,因此您可能需要提交一个bug
报告。

kevent(kq,changelist,nchanges,eventlist,nevents,timeout)
没有达尔文前缀的编译对我来说没有问题。@MartinR-wow,真不敢相信解决方案这么简单:)。你应该用这个贴一个答案。
Darwin.kevent(kq, changelist, nchanges, eventlist, nevents, timeout)