C与Rust的交叉编程

C语言与Rust语言相互调用过程中需要主要的问题

本文主要是用于总结本人在使用Rust重构MUSL中的malloc时遇到的一些C与Rust的映射关系或者需要注意的语法。以下内容大致分为C调用Rust、Rust调用C和其他内容,共分了三个方面进行简单总结。不过以下内容仅仅是个人在尝试用Rust重构malloc时遇到的一些需要注意的非常规语法,以及C与Rust差异化的地方或者某些映射关系。Rust基本语法以及更多细节内容可以参见官方文档 https://doc.rust-lang.org/book/,或者在简单的学习过rust基本语法之后再来看这部分内容。



一、Rust调用C

  1. Rust代码的组织架构:使用mod进行封装架构或者引入其他模块,可以参考链接 https://www.runoob.com/rust/rust-project-management.html ,本文重构的malloc代码架构如下,其中main.rs是程序入口,malloc_c.rs内部是malloc的底层实现代码,malloc_impl.rs中声明活定义了部分相关结构体和函数。

  2. 关于Rust中对应C的数据类型,可以在 crate libc 或者 标准库std::os::raw中可以找到,但是libc中包含的内容比std::os::raw更广泛,所以推荐使用libc。另外,Rust中的usize 对应 C中的 size_t

  3. 使用关键词use 将变量引入代码作用域,并且可以使用as进行重命名

  4. 可以使用#[link(name=“r”)]的方式指定引入的C中的函数来自哪一个库,如下,并且还可给函数起别名,参见链接
    http

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值