我有一个 C 结构体定义为:
struct my_c_s {
u_char *ptr;
unsigned flag_a:1;
unsigned flag_b:1;
int some_num;
}
如何表示
flag_a
和flag_b
?
#[repr(C)]
pub struct my_rust_s {
pub ptr: *const u_char,
//pub flag_a: ?,
//pub flag_b: ?,
pub some_num: ::libc::c_int,
}
我可以将它们声明为
bool
例如
pub flag_bits: ::libc::c_uint,
不,你不能。
有关于支持位字段的一个未解决的问题,该问题似乎并不活跃。在本期中,@retep998 解释了如何在
winapi
中处理位域。如果您需要在 C 接口中处理位域,这可能会有所帮助。
OP 似乎旨在实现 C 互操作,但如果您只需要位域功能,有多种解决方案。
现在可以通过 bitfield_struct crate 获得。