c 判斷程式及作業系統位數

2021-08-19 10:44:00 字數 1456 閱讀 8411

曾經在書上看到過,也被人問起過,搜尋過,為了記憶更加深刻,還是寫一篇博文吧~

程式位數是將一段程式編譯後,程式本身的位數,比如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 ...