米脂
目前,cgo编译器无法处理ac函数中的变量参数和c头文件中的宏,因此您无法做一个简单的操作// #include <sys/ioctl.h>// typedef struct ttysize ttysize;import "C"func GetWinSz() { var ts C.ttysize; C.ioctl(0,C.TIOCGWINSZ,&ts)}为了避开宏,请使用常量,因此// #include <sys/ioctl.h>// typedef struct ttysize ttysize;import "C"const TIOCGWINSZ C.ulong = 0x5413; // Value from Jed Smith's answerfunc GetWinSz() { var ts C.ttysize; C.ioctl(0,TIOCGWINSZ,&ts)}但是,cgo仍然会在ioctl的原型中bar之以鼻。最好的选择是用带有特定数量参数的ac函数包装ioctl并将其链接。作为hack,您可以在上面的注释中导入“ C”// #include <sys/ioctl.h>// typedef struct ttysize ttysize;// void myioctl(int i, unsigned long l, ttysize * t){ioctl(i,l,t);}import "C"const TIOCGWINSZ C.ulong = 0x5413; // Value from Jed Smith's answerfunc GetWinSz() { var ts C.ttysize; C.myioctl(0,TIOCGWINSZ,&ts)}我还没有测试过,但是类似的东西应该可以工作。