曾經在書上看到過,也被人問起過,搜尋過,為了記憶更加深刻,還是寫一篇博文吧~
程式位數是將一段程式編譯後,程式本身的位數,比如32bit。
32bit程式在一般情況下可以在32bit和64bit的作業系統上執行。
下面分別列出獲取程式位數和作業系統位數的方法:
程式位數:
通過指標位數即可獲得:
sizeof(void*) * 8
作業系統位數:
windows:
#include #include #include #include // 安全的取得真實系統資訊
void safegetnativesysteminfo(__out lpsystem_info lpsysteminfo)
else
} // 獲取作業系統位數
int getsystembits()
return 32;
} int _tmain(int argc, _tchar* argv)
注:
1.getnativesysteminfo是windows xp的新增api,用於取得真實系統資訊。(32位程式執行在64位系統上時,getsysteminfo返回的是經過wow64修改後的資訊)
2.iswow64process用於判斷某程序是否執行在wow64下。對於64位程式,wow64process引數會返回false
linux:
貌似系統沒有直接的api,大家通過shell指令碼獲取到資訊後,傳入檔案。
通過shell自動生成乙個標頭檔案fdfs_os_bits.h,標頭檔案中通過巨集os_bits來定義作業系統的位數(32或者64)。在linux中已經除錯通過。
shell**片斷如下:
tmp_src_filename=fdfs_check_bits.c
cat <$tmp_src_filename
#include int main()
eof
cc $tmp_src_filename
bytes=`./a.out`
/bin/rm -f a.out $tmp_src_filename
if [ "$bytes" -eq 8 ]; then
os_bits=64
else
os_bits=32
fi
cat #ifndef _fdfs_os_bits
#define _fdfs_os_bits
#define os_bits $os_bits
#endif
eof
C 判斷作業系統的位數
判斷作業系統的位數有一下幾種方法 1.特徵值intptr 2.wmi 1的實現如下 public static int getosinfo else 但是有問題,如果應用執行的是x86 的模式,判斷就會有誤,如何解決?新增一下 public static bool is64bitwindows el...
c 判斷作業系統位數的示例分享
在.net 4.5中,判斷作業系統不用再寫方法去判斷了,有直接可以利用的屬性了哦,如下所www.cppcns.com示 environme 屬性.net framework 4.5 確定當前程序是否為 64 位程序。當然如果是用的.net 4.5以前的童鞋也不必擔心,同樣也可以用以下的方法來實現判斷...
判斷作業系統
判斷作業系統.cpp 定義控制台應用程式的入口點。include stdafx.h include void getsystem if i 5 j 0 else if i 5 j 1 else if i 5 j 2 else if i 6 j 0 else if i 6 j 1 int tmain ...