cgo怎么传递函数指针?

DND-dou · 2021-02-22 17:36:52 · 1301 次点击

go的函数和c的函数在内存中的样子不一致,所以最好别这么干

#2
更多评论

把函数赋值放到C里做?

package main

/*
typedef struct{
    int (*a)(int);
}A;

extern int fn(int n);

static void setCallBack(){
    A a={
        .a=fn
    };
}

*/
import "C"

func main() {
    C.setCallBack()
}

//export fn
func fn(i C.int) C.int {
    return i
}
#1