回答
您可以檢查指針的大小。我想在32位是4字節和64應該是8
if(sizeof(void*) == 4) then 32bit else 64bit
#ifdef __LP64__
NSLog(@"64-bit\t");
#else
NSLog(@"32-bit\t");
#endif
這個編譯時間。問題在於運行時。 –
編譯時的檢查將涉及#ifdef
「荷蘭國際集團的__LP64__
,這是ARM的數據類型大小的標準。運行時的解決方案將包括檢查指針的大小,像這樣:
if (sizeof(void*) == 4) {
// Executing in a 32-bit environment
} else if (sizeof(void*) == 8) {
// Executing in a 64-bit environment
}
值得慶幸的是,指針大小的一兩件事,編譯64位代碼,不同的標準似乎同意。
僅供參考,'__LP64__'和'sizeof()'解決方案都是編譯時。評估sizeof是編譯過程的一部分,而不是函數。編譯器基本上將sizeof(type)替換爲要編譯的系統上該類型的大小。理想情況下,#ifdef和if/else最終會以相同方式編譯,因爲編譯器會看到8總是== 8並優化8 == 4分支。 – ultramiraculous
從技術上講,你是正確的(但你的論點建立在優化編譯器的假設基礎上)。也許[this](http://stackoverflow.com/a/7984249/945847)將適合「運行時檢查」的更嚴格的定義。 – CodaFi
- 1. 如何檢測Cocoa應用程序是32位還是64位?
- 2. 檢查正在運行的進程是32位還是64位
- 3. 如何判斷應用程序是64位還是32位?
- 4. 有沒有辦法檢查進程是64位還是32位?
- 5. 檢測C++應用程序是在32位還是在64位Windows上運行
- 6. 無論系統是32位還是64位,int都是32位還是64位?
- 7. 檢查處理器是32位還是64位
- 8. 結構大小,檢查是64位還是32位
- 9. 如何檢查我的Perl安裝是32位還是64位?
- 10. 如何檢查安裝的wxPython是32位還是64位?
- 11. 如何檢查WebSphere是32位還是64位?
- 12. 如何檢查安裝的Anaconda是32位還是64位?
- 13. 如何確定進程ID(PID)是32位還是64位應用程序?
- 14. 如何判斷我寫的程序是32位還是64位?
- 15. 知道程序集是64位還是32位
- 16. 無論系統是32位還是64位,uint均爲32位?
- 17. 應該在應用程序中部署32位還是64位SQL Server Express?
- 18. 如何判斷應用程序是以32位還是64位模式運行?
- 19. 如何檢測,如果CPU是32位還是64位
- 20. Autoconf:檢測目標平臺是32位還是64位
- 21. 在C#windows應用程序中安裝應用程序之前,檢查OS是否是32位或64位
- 22. 我在x86-64 PC上運行32位Windows。我應該下載32位還是64位的Python安裝程序?
- 23. 有沒有辦法檢查應用程序的操作系統是32位還是64位?
- 24. 使用哪個命令來檢查python是64位還是32位
- 25. 查找ipa文件是32位還是64位。 (macos/unix)
- 26. 如何在傳統的ASP應用程序中檢測進程是32位還是64位?
- 27. 32位/ 64位Windows/Linux應用程序
- 28. 我應該使用32位還是64位JDK?
- 29. 我應該使用Python 32位還是Python 64位
- 30. VS 2010建立在32位和64位(程序文件)
爲什麼你需要知道?正確編寫的代碼應該可以正常工作。 – dpassage
我同意@dpassage。雖然如果你需要知道檢查設備型號。 https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/model – Desdenova
@dpassage非常天真的評論。對於簡單的事情是正確的,但絕對不是,當你想爲不同的CPU架構優化你的代碼時。 –