【发布时间】:2017-05-01 19:32:52
【问题描述】:
我有一个用 C 实现的函数,我想用 Rust 编写一个具有相同接口的函数。该函数接收指向数组开头的指针 (win8_t *) 和数组的长度。我需要能够遍历数组。
必须有更好的方法来获取下一个值,但现在我可以做这个奇怪的事情:
use std::mem;
pub extern "C" fn print_next(i: *const u8) {
let mut ii = unsafe { mem::transmute::<*const u8, i64>(i) };
ii += 1;
let iii = unsafe { mem::transmute::<i64, *const u8>(ii) };
let jj = unsafe { *iii };
println!("{}", jj); // jj is next value
}
【问题讨论】:
-
接收一个指针 [...] 和长度——你的函数只接受一个参数。途中有没有丢东西?
-
如果您包含 C 函数的 minimal reproducible example,那将会非常有用。
标签: rust raw-pointer