无论是在ffi教程中还是在自动生成的接口中,*const T大部分时间都使用指针。据我所知,&T和之间的区别*const T只是*const T不必满足某些条件,例如不为空,并且取消引用是不安全的。
fn main() {
unsafe {
do_something(&TestStruct {data: 3})
}
}
#[repr(C)]
pub struct TestStruct {
data: u32
}
extern "C" {
fn do_something(arg: &TestStruct);
}
Run Code Online (Sandbox Code Playgroud)
这段代码可以编译并运行。因为外部函数的用法与内部函数类似,所以我不明白为什么在那里使用原始指针作为默认值。