如何获取适用于FFI的机器大小整数?

3

在处理外部代码时,我需要获取一个类似以下形式的 C 结构体的指针:

typedef struct {
  int two;  
  int nd;
  char typekind; 
  ...           
} PyArrayInterface;

显然,int的大小是未知的。我如何在Rust中表示这个结构体?可能是i32,但有一天我可能会遇到ILP64数据模型...
目前我的唯一想法是创建一个枚举来包装结构体,在运行时检查架构,并执行正确的操作。每次需要从C获取结构体时使用if语句和transmute有点傻,但我目前没有更好的办法...

请不要经常以会改变意思的方式编辑您的帖子,对于第二个问题,请开启一个新的问题线程。让我们保持SO问题的原子性 :) - Lukas Kalbertodt
我的错:)我必须更加自律,等待更长时间再发布...我删除了我的第二个问题。 - Jackson Loper
1个回答

4
处理 FFI 类型时,您应该使用 libc 包。您可以在 这里 找到它的文档。
您需要的两种类型是 libc::c_intlibc::c_char
Rust 书中的 本章 提供了一个简洁的介绍,也提到了 c_int

2
2:或者使用 libc::c_char 让库来决定。 - kennytm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接