- 主题:发现一个rust libc crate的问题
libc不同平台不同实现
如果是要通过编译,简单处理一下是 xxx.l_type = libc::F_WRLCK as _
【 在 chunhui 的大作中提到: 】
: libc::flock 的l_type字段是 c_short。在mac os中libc::F_WRLCK 定义是c_short。可以填写到上面的字段中。
: 但是在linux中,libc::F_WRLCK 被定义成 c_int,如果要填写到上面的字段中,就会导致类型不匹配。这是不是libc这个库没弄好?
--
FROM 222.65.123.*
mac 和 bsd 也可以用 as _ 转,代码是一样的,不会报错
rust libc库只是如实把C libc库转到rust,它本来就是各平台会有不同。
【 在 chunhui 的大作中提到: 】
: 这个还需要判断是什么平台。如果是mac bsd可以直接用,如果是linux需要 as 转一下。
: 这个问题rust的libc库内部貌似无法解决?
--
FROM 222.65.123.*
不是,是写 as _ , 后面是下划线,编译器会自动推定类型。
【 在 chunhui 的大作中提到: 】
: 噢,你的意思是不加os判断,直接就写 as u16。可能在mac上本来就是u16,再写成 as u16。会有警告提示。不过这是最简单办法了。我回头试试。如果有警告可以加个关闭警告的标记。总比区分os简单。
--
FROM 222.65.123.*
那这可以提个bug report
【 在 gameplayer 的大作中提到: 】
: 楼主说的对,感觉还是有问题,各平台不同是正确的,但Linux上应该是c_short,在li
: nux的头文件里:
: #ifndef F_RDLCK
: ...................
--
FROM 222.65.123.*
简单的是去crate的github主页里留言就行了。
【 在 chunhui 的大作中提到: 】
: 这个咋提啊?要么谁给提一个?我还没提过这东西。
--
FROM 222.65.123.*