请教一些各位 ruster 是如何在源代码级别兼容 32/64 位的啊?

2023-02-15 14:38:33 +08:00
 zhwguest

比如我提供一个.so 中的加法器:

32 位系统中的 c 来调用:

int adder(int a, int b);

64 位系统中的 c 来调用

int64 adder(int64 a, int64 b);

这种有办法条件编译?

1475 次点击
所在节点    Rust
6 条回复
DianQK
2023-02-15 14:47:52 +08:00
cty 中的 `c_long`?
DsuineGP
2023-02-15 15:50:10 +08:00
rust 端导出 i32 i64 两个 ffi 接口
c 端在编译期根据 target 判断调用哪个接口
araaaa
2023-02-16 12:16:37 +08:00
用 isize usize
proxytoworld
2023-02-21 11:49:08 +08:00
c 里面

#ifdef x64_86
int adder(int a, int b);
#else
int64 adder(int64 a, int64 b);

rust 里面
#[cfg(target_arch = "x86_64")]
fn adder(a:i64,b:i64) -> i64
#[cfg(target_arch = "x86")]
fn adder(a:i32,b:i32) -> i32
suifengdaren
2023-02-21 14:10:30 +08:00
isize
dalabenba
323 天前
feature gate?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/916330

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX