Int 如何为FFI获取机器大小的整数?
在处理外来代码时,我必须使用指向以下形式的C结构的指针Int 如何为FFI获取机器大小的整数?,int,rust,ffi,Int,Rust,Ffi,在处理外来代码时,我必须使用指向以下形式的C结构的指针 typedef struct { int two; int nd; char typekind; ... } PyArrayInterface; 显然,int的大小是未知的。如何用rust表示此结构?它可能是i32,但有一天我可能会遇到ILP64数据模型 在这一点上,我唯一的想法是创建一个枚举来包装结构,在运行时检查架构,然后做正确的事情。每次我需要从C获取结构时,都会有一个if语句和一个tra
typedef struct {
int two;
int nd;
char typekind;
...
} PyArrayInterface;
显然,int
的大小是未知的。如何用rust表示此结构?它可能是i32,但有一天我可能会遇到ILP64数据模型
在这一点上,我唯一的想法是创建一个枚举来包装结构,在运行时检查架构,然后做正确的事情。每次我需要从C获取结构时,都会有一个
if
语句和一个transmute
,这是非常愚蠢的,但目前我没有更好的方法…要处理FFI类型,你应该使用板条箱。你可以找到它的文档
您需要的两种类型是libc::c_int
和libc::c_char
《铁锈》一书中给出了一个简洁的介绍,还提到了
c_int
2:或者使用libc::c_char
让图书馆决定。请不要经常以改变意思的方式编辑你的文章,对于第二个问题,请打开一个新的问题线程。让我们保持这样的问题原子:)我的坏:)。我必须更加严格地等待更长的时间,然后才能发布。。。我删除了第二个问题。