面试题答案
一键面试- 实现步骤:
- 编写C函数:编写一个简单的C函数,用于计算整数的平方。
- 创建Rust项目:使用
cargo new
命令创建一个新的Rust项目。 - 配置链接C代码:在
Cargo.toml
文件中配置链接C代码相关设置。 - 定义Rust外部函数接口:在Rust代码中使用
extern "C"
来定义外部函数接口,注意类型转换。 - 调用C函数:在Rust的
main
函数中调用定义好的外部函数。
- 关键代码示例:
- C代码(
square.c
):
- C代码(
int square(int num) {
return num * num;
}
- Rust代码(
src/main.rs
):
extern "C" {
fn square(num: i32) -> i32;
}
fn main() {
let num = 5;
unsafe {
let result = square(num);
println!("The square of {} is {}", num, result);
}
}
Cargo.toml
配置:
[package]
name = "call_c_function"
version = "0.1.0"
edition = "2021"
[build - dependencies]
cc = "1.0"
[package.metadata.cc]
crate_type = ["staticlib"]
files = ["square.c"]
在这个示例中,C函数square
计算整数的平方。在Rust中,通过extern "C"
定义了外部函数接口,注意参数和返回值类型都是i32
,与C语言中的int
类型对应。在main
函数中,使用unsafe
块调用该外部函数,因为调用外部函数绕过了Rust的安全检查机制。Cargo.toml
中配置了使用cc
构建依赖,并指定要编译的C文件为square.c
,构建类型为静态库。