C++获取系统和程序的位数
来源:互联网 发布:浙师大行知学院好不好 编辑:程序博客网 时间:2024/05/21 22:28
1. 概述
如今 64 位系统越来越流行了 , 对于软件开发人员来说 , 掌握 64 位开发技术将会有更好的发展空间 ; 而且经过这几年的发展 , 64 位开发工具也成熟了 , 例如 Visual Studio 2010 等后续版本 ;
关于如何配置64位平台 , MSDN上有详细的介绍 : http://msdn.microsoft.com/zh-cn/library/9yb4317s.aspx
在很多时候 , 我们希望能兼容老系统 , 于是配置了两个编译平台 Win32 和 x64 ;
但光这样做还是不够的 , 因为老系统不支持某些新功能 ; 所以我们需要在运行时动态动态判断 ;
最常见的判断有两种 :
- 判断程序位数 : 当前程序被编译到了哪个平台 ;
- 判操作系统位数 : 当前程序是运行在 32 位的操作系统上 , 还是 64 位的操作系统 ;
对于第一种判断程序位数 , 虽然也可以通过配置预处理符号 , 做编译时判定 ; 但该方法稍微有点繁琐 , 而且在有些情况下不太适合 , 例如我想获得程序位数字符串 , 就必须用 #if
等语句写多行代码 ;
对于第二种判操作系统位数 , 那就只有在运行时判断了 ;
2. 代码实例
#include "stdafx.h"#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 *FuncGetSystemInfo)(LPSYSTEM_INFO lpSystemInfo); FuncGetSystemInfo funcGetNativeSystemInfo = (FuncGetSystemInfo)GetProcAddress(GetModuleHandle(_T("kernel32")), "GetNativeSystemInfo"); // 优先使用 "GetNativeSystemInfo" 函数来获取系统信息 // 函数 "GetSystemInfo" 存在系统位数兼容性问题 if (NULL != funcGetNativeSystemInfo) { funcGetNativeSystemInfo(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 %d bit Program, run on %d bit System..."), nBitCode, nBitSys); _getch(); return 0;}
作者 Github : tojohnonly , 博客 : EnskDeCode
阅读全文
0 0
- C++获取系统和程序的位数
- c语言获得程序位数和操作系统位数和名称
- [C/C++]_[初级]_[获取Windows系统的位数32位或64位]
- Window系统下C/C++程序毫秒和微秒级程序运行时间的获取方法
- 关于C/C++获取指针大小判断系统位数的猜想
- 获取系统位数
- 获取Ubuntu系统位数
- 获取系统位数
- cpu位数和系统位数
- 查看solaris系统的版本和位数
- 查看CPU和系统内核的位数
- 查看solaris系统的版本和位数
- 查看solaris系统的版本和位数
- 获得程序位数和操作系统位数
- linux系统位数查看和cpu位数
- VC 64位程序开发心的——获得程序位数和操作系统位数
- 查看ubuntu系统的版本和系统位数
- 一个c程序产生6位数的随机密码
- jq 多种过滤器
- C语言程序设计:现代方法6
- 求高精度幂,Java BigDecimal 去前导零和后导零
- git使用
- 七牛云php
- C++获取系统和程序的位数
- csdn 直接粘贴待图片文章解决办法
- Makefile学习心得
- webservice 执行连接oracle报错32位不能运行64位系统
- FreeSWITCH学习笔记 第一场 第一个镜头 安装启动
- Trimble Inpho UASMaster 7.1.3.51242 1DVD
- 518抽奖软件源码之:GDI+上下左右中对齐
- 曲率-通俗讲解
- JAVA集合类基础知识