如今64位系统越来越流行了,对于软件开发人员来说,掌握64位开发技术将会有更好的发展空间。而且经过这几年的发展,64位开发工具也成熟了,例如Visual Studio 2010。
关于如何配置64位平台,MSDN上有详细的介绍——
http://msdn.microsoft.com/zh-cn/library/9yb4317s.aspx
如何:针对 64 位平台配置 Visual C++ 项目
在很多时候,我们希望能兼容老系统,于是配置了两个编译平台——Win32 和 x64。
但光这样做还是不够的,因为老系统不支持某些新功能。所以我们需要在运行时动态动态判断。
最常见的判断有两种——
1.判断程序位数:当前程序被编译到了哪个平台。
2.判操作系统位数:当前程序是运行在32位的操作系统上,还是64位的操作系统。
对于第一种——判断程序位数,虽然也可以通过配置预处理符号,做编译时判定。但该方法稍微有点繁琐,而且在有些情况下不太适合——例如我想获得程序位数字符串,就必须用“#if”等语句写多行代码。
对于第二种——判操作系统位数,那就只有在运行时判断了。
代码如下——
#include <Windows.h> #include <stdio.h> #include <tchar.h> #include <conio.h> // 获取程序位数(被编译为多少位的代码) int GetProgramBits() { return sizeof(int*) * 8; } // 安全的取得真实系统信息 VOID SafeGetNativeSystemInfo(__out LPSYSTEM_INFO lpSystemInfo) { if (NULL==lpSystemInfo) return; typedef VOID (WINAPI *LPFN_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo); LPFN_GetNativeSystemInfo fnGetNativeSystemInfo = (LPFN_GetNativeSystemInfo)GetProcAddress( GetModuleHandle(_T("kernel32")), "GetNativeSystemInfo");; if (NULL != fnGetNativeSystemInfo) { fnGetNativeSystemInfo(lpSystemInfo); } else { GetSystemInfo(lpSystemInfo); } } // 获取操作系统位数 int GetSystemBits() { SYSTEM_INFO si; SafeGetNativeSystemInfo(&si); if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 || si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 ) { return 64; } return 32; } int _tmain(int argc, _TCHAR* argv[]) { const int nBitCode = GetProgramBits(); const int nBitSys = GetSystemBits(); _tprintf(_T("I am a %dbit Program, run on %dbit System."), nBitCode, nBitSys); // _getch(); return 0; }