有人可以通過簡單的c程序來查找我的機器是16位還是32位或64位?如何使用c程序找到我的機器是16位還是32位或64位
回答
這應該工作:
#include <iostream>
int main(int argc, char ** arv){
std::cout << "sizeof(void*)=" << sizeof(void*) << std::endl;
return 0;
}
看到我的對HPT的回答發表評論。 – 2010-09-06 08:54:07
另外,這不是C. – domen 2010-09-06 09:21:07
爲「實現細節」這正是那種被冷落的C語言的正式規範的東西;考慮到編譯器在理論上應該將它隱藏起來,在技術上你所能做的任何事情都是依賴於「未定義的非標準行爲」。
這就是迂迴的答案。實際的答案是,您可以使用sizeof(int)
來確定您的特定架構上的寄存器寬度,並使用任何合理的編譯器。
注意,這是在編譯時確定,而不是運行時間,所以它會告訴你是否在32位或64位(或任何位)模式,而不是它是否是例如,您的應用程序是編譯在模擬32位x86的64位機器上運行。對於這類信息,您需要查看完全特定於平臺的內容,例如CPUID
。
不要爲此使用'sizeof(int)'。它(實際上)不會給你正確的答案。相反,'sizeof(size_t)','sizeof(ptrdiff_t)'或sizeof(char *)'是很好的選擇。 (在任何健全的機器上,它們都將是相同的。) – 2010-09-06 12:21:21
sizeof(char *)在具有不同指針大小的平臺上不起作用(例如,實模式下的x86與near/far/huge指針無關)。 size_t可能會。哪些編譯器具有不是寄存器寬度的「int」類型? – Crashworks 2010-09-07 00:17:27
編譯器必須知道編譯時它正在建設什麼架構,所以應該沒有必要確定該在運行。
編譯器通常會有一個預定義的宏指示體系結構;您將不得不測試您打算構建的所有體系結構。如果您只關心linux操作系統,那麼您可以使用uname()調用。您可以將struct utsname傳遞給此API並獲取詳細信息。有關各種體系結構的宏的列表,請參閱http://predef.sourceforge.net/prearch.html
這裏有多層編譯器 - 操作系統 - 處理器。 從用戶C程序獲取機器拱不是可取的,因爲您沒有足夠的信息並且不具備便攜性。
但是如果u想知道像Linux一樣在這裏特定的操作系統是link
可以使用上述工具的幫助下在你的程序。
您可以使用預處理:
#ifdef __i386__
blahblah
#elif __arm__
blahblah
#elif defined(__x86_64__) || defined(_M_AMD64) || defined (_M_X64)
blahblah
#endif
- 1. 使用C#,如何得到我的機器是64位還是32位?
- 2. 如何判斷我寫的程序是32位還是64位?
- 3. 如何找到Android應用程序是32位或64位
- 4. 無論系統是32位還是64位,int都是32位還是64位?
- 5. 如何檢測Cocoa應用程序是32位還是64位?
- 6. 如何判斷應用程序是64位還是32位?
- 7. 如何找到它是32位還是64位? Tomcat
- 8. 使用WMI,我如何確定遠程進程是32位還是64位?
- 9. 檢查應用程序是建立在32位還是64位?
- 10. 如何檢查我的Perl安裝是32位還是64位?
- 11. 如何判斷我的cygwin安裝是32位還是64位?
- 12. 無論系統是32位還是64位,uint均爲32位?
- 13. 如何找到如果apk是32位或64位
- 14. 知道程序集是64位還是32位
- 15. 我還可以使用64位機器開發32位應用程序嗎?
- 16. 如何確定進程ID(PID)是32位還是64位應用程序?
- 17. 找出一個DLL是從Java的32位還是64位
- 18. 如何查找我的Amazon EC2實例是32位還是64位?
- 19. 32或64位機器
- 20. 我應該在新機器上使用Eclipse 32位還是64位?
- 21. 在32位和64位機器中總是長64位
- 22. 檢測C++應用程序是在32位還是在64位Windows上運行
- 23. 如何判斷應用程序是以32位還是64位模式運行?
- 24. 如何檢查Linux文件(.so)是32位還是64位從Windows機器
- 25. 我應該使用32位還是64位JDK?
- 26. 我應該使用Python 32位還是Python 64位
- 27. 如何檢查安裝的wxPython是32位還是64位?
- 28. 如何檢查安裝的Anaconda是32位還是64位?
- 29. 32位或64位?使用C代碼
- 30. 我在x86-64 PC上運行32位Windows。我應該下載32位還是64位的Python安裝程序?
這是不可能的* *一般,但對於具體的架構或操作系統是可以做到的。 – caf 2010-09-06 08:31:00
我正在使用linux gcc編譯器 – Jagan 2010-09-06 08:31:36
是否還有16位Linux/GCC實現!? – Clifford 2010-09-06 09:16:00