首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rust中表示指向C数组的指针?

如何在Rust中表示指向C数组的指针?
EN

Stack Overflow用户
提问于 2016-08-29 22:35:16
回答 1查看 3.3K关注 0票数 8

我需要一个Rust中的extern "C" FFI函数,并希望接受固定大小的数组。C代码传递的内容类似于:

代码语言:javascript
复制
// C code
extern int(*)[4] call_rust_funct(unsigned char (*)[3]);
....
unsigned char a[] = { 11, 255, 212 };
int(*p)[4] = call_rust_funct(&a);

我如何为它编写我的Rust函数?

代码语言:javascript
复制
// Pseudo code - DOESN'T COMPILE
pub unsafe extern "C" fn call_rust_funct(_p: *mut u8[3]) -> *mut i32[4] {
    Box::into_raw(Box::new([99i32; 4]))
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-29 23:03:21

对于固定大小的数组,您需要使用Rust的语法:

代码语言:javascript
复制
pub unsafe extern "C" fn call_rust_funct(_p: *mut [u8; 3]) -> *mut [i32; 4] {
    Box::into_raw(Box::new([99i32; 4]))
}

您还可以始终使用*mut std::os::raw::c_void并将其转换为正确的类型。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39208831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档