2017-01-27 88 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"。該值與平臺目標三元組的第一個元素密切相關,儘管它不相同。

相關問題