2017-01-27 65 views
2

如果有条件检查处理器是32位还是64位?我正在寻找一些配置检查,例如#cfg[x86]cfg[x64]如果体系结构是32位或64位,如何检查Rust?

+0

你想在编译检测到这种(启用/禁用不同的功能),或者是运行时检测是否足够?后者可以通过'if mem :: size_of :: ()== 8'来完成(并且会被优化)。 –

+0

在编译时,禁用部分代码。 –

回答

4

the Rust referencecfg部分的#[cfg(target_pointer_width = "64")]似乎是一个可能的解决方案。它是基于一个指针的大小(以及isizeusize),其应当对应于体系结构。

+1

*应该对应于架构* - 并非总是如此。例如,AVR芯片具有16位指针,但是是8位架构。 – Shepmaster

+0

那么答案也不是吗? –

+1

你所问的问题还不够具体。你为什么关心“架构”?如果你关心指针的大小,那是一个问题。如果你关心其他方面,那么'target_arch'可能是对的。如果你关心整数本地CPU的大小,那么我知道没有答案。 – Shepmaster

6

你应该检查conditional compilation锈参考章节:

target_arch = "..." - 目标CPU架构,如"x86""x86_64""mips""powerpc""powerpc64""arm",或"aarch64"。该值与平台目标三元组的第一个元素密切相关,尽管它不相同。

相关问题