在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);
}
这段代码可以编译并运行.因为外部函数和内部函数在用法上相似,我不明白为什么原始指针被用作默认值.