gpt4 book ai didi

Swift 2 @convention 使用错误

转载 作者:行者123 更新时间:2023-11-30 14:03:08 25 4
gpt4 key购买 nike

我的 Swift 2 有问题,我无法转换这部分代码:

let intTran = UnsafeMutablePointer<Int>(bitPattern: -1)
let tranPointer = COpaquePointer(intTran)
let transient = CFunctionPointer<((UnsafeMutablePointer<()>) -> Void)>(tranPointer)

我收到此错误:

'CFunctionPointer' is unavailable: use a function type '@convention(c) (T) -> U'

我正在尝试以这种方式更改它:

let intTran = UnsafeMutablePointer<Int>(bitPattern: -1)
let tranPointer = COpaquePointer(intTran)
typealias transient2 = @convention(c) (UnsafeMutablePointer<()>) -> Void

但是我无法使用transient2,我不知道为什么。

比你

最佳答案

我一直在 Swift Playground 中玩弄你的代码,并注意到这段代码(你对原始代码的替换)由于 bitPattern 设置为 -1 时失败(请注意,我得到了一个运行时异常 - 不是编译器错误)。当我用适当的东西替换它时(例如用 1,因为 bitPattern 必须表示虚拟地址空间内的有效地址,并且正如暗示的那样,必须是非负整数),它就成功了。我设法使用以下代码来完成并运行它:

import Foundation

let intTran = UnsafeMutablePointer<Int>(bitPattern: 1)
let tranPointer = COpaquePointer(intTran)

typealias transient2 = @convention(c) (UnsafeMutablePointer<()>) -> Void

let abc: transient2? = nil

祝你好运,希望这能解决你的问题。

关于Swift 2 @convention 使用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com