Back to Top

使用cgo时遇到的一些小问题

第二次掉坑里面了, 查了半天, 记录下来备忘….

import "C"的位置

必须在C代码注释下写import "C", 否则不编译

pack(1)问题

#pragma pack(1)
struct header {
  uint8_t msg_id;
  uint32_t target;
};
#pragma pack()

当使用上面的结构体时, 获取结构体大小是正确的unsafe.Sizeof(C.struct_header{}), 但是在go代码中无法识别target变量, 这是因为target没有字节对齐的原因. 如果变量是字节对齐的, 则不存在无法识别变量的问题.

错误提示是: h.target undefined (type *_Ctype_struct_header has no field or method target)

本文链接, 未经许可,禁止转载