如何获得FFI的机器大小整数?

时间:2015-10-25 15:40:06

标签: int rust ffi

在处理外部代码时,我必须指向表单

的C结构
typedef struct {
  int two;  
  int nd;
  char typekind; 
  ...           
} PyArrayInterface;

显然int的大小未知。如何在生锈中表示此结构?它可能是i32,但有一天我可能会遇到ILP64数据模型......

此时我唯一的想法是创建一个枚举来包装结构,在运行时检查体系结构,并做正确的事情。每次我需要从C获取结构时,有一个if语句和一个transmute是非常愚蠢的,但我现在没有更好的了...

1 个答案:

答案 0 :(得分:4)

要处理FFI类型,您应该使用libc包。你可以找到它的文档here

您需要的两种类型是libc::c_intlibc::c_char

Rust书中的

This chapter给出了一个简洁的介绍,并提到了c_int