登录
首页 >  Golang >  Go问答

如何在 C 函数中处理指向 Go 指针的 cgo 参数?

来源:stackoverflow

时间:2024-03-05 20:45:16 319浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《如何在 C 函数中处理指向 Go 指针的 cgo 参数?》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

package main

//
// void test(data **void) {
//     Do something here...
// }
import "C"

import "unsafe"

func main() {
    var data *C.void 
    cData := unsafe.Pointer(&data)
    C.test(cData)
}

上面是我正在尝试执行的操作的示例,但我收到一个运行时错误,指出 cgo 参数具有指向 go 指针的 go 指针。我该如何解决这个问题?有什么想法吗?


正确答案


go 中 void* 的等价物是一个 unsafe.pointer,没有理由声明 *c.void 的值。您的示例中的错误不是关于 go 指针指向 go 指针(这是运行时错误),您将收到 (variable of type unsafe.pointer) as *unsafe.pointer 的错误,该错误无法编译。使用错误中显示的类型:

func main() {
    var data unsafe.Pointer
    C.test(&data)
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何在 C 函数中处理指向 Go 指针的 cgo 参数?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>