首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Go中将函数指针传递给C代码

在Go中,可以通过使用cgo工具来将函数指针传递给C代码。

以下是实现该功能的步骤:

  1. 创建一个.go文件,命名为example.go,其中包含你的Go代码。
代码语言:txt
复制
package main

// #include <stdio.h>
// extern void callCFunc(void (*func)());
import "C"

import "fmt"

// 导出的C函数,用于调用Go中的函数指针
//export callGoFunc
func callGoFunc() {
    fmt.Println("Go function called from C")
}

func main() {
    // 将Go函数指针传递给C代码
    C.callCFunc((*[0]byte)(C.callGoFunc))
}
  1. 使用go build命令编译生成可执行文件。
代码语言:txt
复制
go build -o example example.go
  1. 创建一个example.c文件,用于实现C代码。
代码语言:txt
复制
#include <stdio.h>

// 声明C函数,用于接收Go函数指针
extern void callGoFunc();

int main() {
    printf("C function called\n");

    // 调用Go函数指针
    callGoFunc();

    return 0;
}
  1. 使用C编译器将C代码和Go代码一起编译成可执行文件。
代码语言:txt
复制
gcc -o example example.c example
  1. 运行生成的可执行文件。
代码语言:txt
复制
./example

运行结果将会是:

代码语言:txt
复制
C function called
Go function called from C

这样,你就成功地将函数指针从Go代码传递给了C代码。在这个例子中,Go代码中的callGoFunc函数被导出为C函数,然后在C代码中被调用。你可以根据自己的需要修改和扩展这个示例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券