有以下一个 C 的结构体
#pragma pack(1) //单字节对齐
typedef struct{
unsigned char a[2048];
unsigned int b;
}sampleStruct;
#pragma pack()
在 Golang 中给这个结构体赋值
var sampleStruct C.sampleStruct = C.sampleStruct{
[2048]C.uchar{}
C.uint(0)
}
理论上应该是成功的,但是编译器却提示我
cannot use _Ctype_uint(0) (type _Ctype_uint) as type [4]byte in field value
测试平台
有大佬知道为什么会这样吗
另外,定义如下函数
unsigned int add(unsigned int a, unsigned int b) {
return a + b;
}
在 golang 中使用如下调用
C.add(C.uint(2), C.uint(1))
是成功的
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.