我有一些带有结构指针参数的c函数。

extern "C" {
    fn InitSomeStruct() -> *SomeStruct;
    fn SomeFunction(v: *SomeStruct);
    fn DestroySomeStruct(v: *SomeStruct);
}

fn main() {
    unsafe {
        let s = InitSomeStruct();
        SomeFunction(s);
        DestroySomeStruct(s);
    }
}

SomeStruct的实现是未知的。
如何从 rust 代码中声明和使用诸如SomeStruct之类的外部结构?

最佳答案

约定是对不透明的FFI类型使用一个空的枚举,即:

enum SomeStruct {}

有时也使用诸如struct SomeStruct;这样的空结构。

09-27 13:26