我正在尝试在cgo中访问ac struct,但是要这样做
无法确定C.utmpx的名称种类
utmpx是结构
这是执行代码:
/* #include <stdio.h> #include <stdlib.h> #include <utmpx.h> #include <fcntl.h> #include <unistd.h> */ import "C" type record C.utmpx fd, err := os.Open(C._PATH_UTMPX) // this works fd, err := os.Open(C.UTMPX_FILE) // error
在utmpx.h文件中,有
#define _PATH_UTMPX "/var/run/utmpx" #define UTMPX_FILE _PATH_UTMPX
我可以使用_PATH_UTMPX,但在使用UTMPX_FILE时也会收到相同的警告,为什么?
看来我无法访问在.h文件中声明的这些变量,该怎么办?
平台:macOS sirria,go 1.8
package main import "os" /* #define _GNU_SOURCE 1 #include <stdio.h> #include <stdlib.h> #include <utmpx.h> #include <fcntl.h> #include <unistd.h> char *path_utmpx = UTMPX_FILE; typedef struct utmpx utmpx; */ import "C" type record C.utmpx func main() { path := C.GoString(C.path_utmpx) fd, err := os.Open(path) if err != nil { panic("bad") } fd.Close() }
type record C.utmpx
一些提示:
祝好运!