FFI与嵌入:结合Rust和其他语言
1. 新类型与C兼容性
在当前的开发中,引入了一个新类型 8BS5BCMF 。尽管代码不会显式操作战士表,但仍需确保与C语言的位兼容性。 8BS5BCMF 的定义如下:
struct 8BS5BCMF {
tail: *mut *mut Instruction,
head: *mut *mut Instruction,
nprocs: u32,
succ: *mut 8BS5BCMF,
pred: *mut 8BS5BCMF,
id: u32,
}
原本可以将 .BST 中的私有字段设为 NBST@TU 中指向 void 的指针,但这样会减少项目C端的类型信息,不利于未来的移植工作。在Rust端明确类型后,将C函数重写为Rust函数会更加容易。
2. 调用C函数
现在我们能够创建具有C位布局的Rust结构体,接下来可以将这些内存传递给C代码。需要注意的是,这本质上是一项不安全的操作,因为C代码可能会以破坏Rust不变性的方式操作内存。唯一能确保安全的方法是提前审查C代码,这与模糊测试的要求相同。
在 TSDNBSTST 中,使用一个小的 extern 块来链接 MJCNBSTA :
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



