30、FFI与嵌入:结合Rust和其他语言

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


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值