define对CGo有问题。我可以将其与Linux amd64上的Go 1.8.1一起使用,如下所示:
package mainimport "os"import "C"type record C.utmpxfunc main() { path := C.GoString(C.path_utmpx) fd, err := os.Open(path) if err != nil { panic("bad") } fd.Close()}- 我必须定义_GNU_SOURCE才能获得UTMPX_FILE定义。
- 我不得不创建path_utmpx变量来解决CGo的#define问题。
- 我必须执行typedef才能进行
type record C.utmpx
编译。 - 使用Go,您不能直接使用C字符串。您必须将它们转换为Go字符串。同样,如果要使用Go字符串调用C函数,则必须将它们转换为C字符串(并释放堆中分配的空间)。
一些提示:
- https://blog.golang.org/c-go-cgo
- https://golang.org/cmd/cgo/
祝好运!



