VC中Windows中一些宏的含义
https://www.cnblogs.com/zhcncn/archive/2013/05/21/3091052.html
1. _WIN32_WINDOWS,_WIN32_WINNT,WINVER
这三个宏其实都是Windows的版本宏,在Windows 95,98,Me这一分支的OS中,Windows的定义的版本宏是_WIN32_WINDOWS。与此同时,Windows重新开发了NT系列,且其编号从NT4.0开始,经过Windows 2000,XP, Server 2003,Vista,Server2008,Win7,Win8. 在这一分支中,Windows的定义的版本宏是_WIN32_WINNT。_WIN32_WINDOWS宏便被废弃了。
WINVER是_WIN32_WINDOWS或_WIN32_WINNT的别名。在SDK的sdkddkver.h中有其定义,可见WINVER<=>_WIN32_WINNT宏的值。
#ifndef WINVER #ifdef _WIN32_WINNT // set WINVER based on _WIN32_WINNT #define WINVER _WIN32_WINNT #else #define WINVER 0x0601 #endif #endif
Window各个版本对应的宏值
Minimum system required |
Macros to define |
Win8 |
_WIN32_WINNT>=0x0602 |
Win7 |
_WIN32_WINNT>=0x0601 |
Windows Server 2008 R2 |
_WIN32_WINNT>=0x0601 |
Windows Server 2008 |
_WIN32_WINNT>=0x0600 |
Windows Vista |
_WIN32_WINNT>=0x0600 |
Windows Server 2003 |
_WIN32_WINNT>=0x0502 |
Windows XP |
_WIN32_WINNT>=0x0501 |
Windows 2000 |
_WIN32_WINNT>=0x0500 |
Windows NT 4.0 |
_WIN32_WINNT>=0x0400 |
Windows Me |
_WIN32_WINDOWS=0x0500 |
Windows 98 |
_WIN32_WINDOWS>=0x0410 |
Windows 95 |
_WIN32_WINDOWS>=0x0400 |
2. _WIN32_IE
Windows IE浏览器的版本宏。浏览器各个版本宏的值定义在sdkddkver.h中,
#define _WIN32_IE_IE20 0x0200 #define _WIN32_IE_IE30 0x0300 #define _WIN32_IE_IE302 0x0302 #define _WIN32_IE_IE40 0x0400 #define _WIN32_IE_IE401 0x0401 #define _WIN32_IE_IE50 0x0500 #define _WIN32_IE_IE501 0x0501 #define _WIN32_IE_IE55 0x0550 #define _WIN32_IE_IE60 0x0600 #define _WIN32_IE_IE60SP1 0x0601 #define _WIN32_IE_IE60SP2 0x0603 #define _WIN32_IE_IE70 0x0700 #define _WIN32_IE_IE80 0x0800
在sdkddkver.h中也可以看到,不同的Windows版本,所支持的IE浏览器版本是不同的。从以下的代码可以看到,Windows XP之前的系统,只支持IE到IE6. 从Windows XP之后,所有的Windows版本都支持IE支持到IE8. IE9不再支持Windows XP(包括Server 2003)。IE10则不再支持Vista。(refer to:Internet Explorer_百度百科)
#ifndef _WIN32_IE#ifdef _WIN32_WINNT// set _WIN32_IE based on _WIN32_WINNT#if (_WIN32_WINNT <= _WIN32_WINNT_NT4)#define _WIN32_IE _WIN32_IE_IE50#elif (_WIN32_WINNT <= _WIN32_WINNT_WIN2K)#define _WIN32_IE _WIN32_IE_IE501#elif (_WIN32_WINNT <= _WIN32_WINNT_WINXP)#define _WIN32_IE _WIN32_IE_IE60#elif (_WIN32_WINNT <= _WIN32_WINNT_WS03)#define _WIN32_IE 0x0602#else#define _WIN32_IE 0x0800#endif#else#define _WIN32_IE 0x0800#endif #endif
3. _MSC_VER
_MSC_VER 定义编译器的版本。程序中加入_MSC_VER宏可以根据编译器版本让编译器选择性地编译一段程序。(refer to:_MSC_VER_百度百科)
Visual Studio |
Visual C++ Version |
_MSC_VER Value |
Visual C++ 2010 |
VC++ 10.0 |
1600 |
Visual C++ 2008 |
VC++ 9.0 |
1500 |
Visual C++ 2005 |
VC++ 8.0 |
1400 |
Visual C++ 2003 |
VC++ 7.1 |
1310 |
Visual C++ 2003 |
VC++ 7.0 |
1300 |
Visual C++ 6.0 |
VC++ 6.0 |
1200 |
VC++ 5.0 |
1100 |
4. _WIN32
32 bit Plarform: #ifdef _WIN32
5. _Win64
64 bit Plarform: #ifdef _WIN64
6. _WINDOWS
如果定义了该宏,表明它是一个GUI Application:#ifdef _WINDOWS
7. _CONSOLE
如果定义了该宏,表明它是一个GUI Application:#ifdef _CONSOLE
--------------------------
参考:
条件编译小结(条件编译小结_immcss的专栏-CSDN博客_css 条件编译)
VC中Windows中一些宏的含义相关推荐
- 视频直播:Windows中各类画面源的截取和合成方法总结
当今,视频直播技术和实时音视频技术已经是很多行业必备,典型的应用场景有教育直播.远程视频会议.互联网娱乐等.在移动端发起直播,其画面源的种类是十分有限的,无非是取摄像头.截屏等.PC端由于其系统资源充 ...
- VC/MFC中常用宏的含义
VC/MFC中常用宏的含义 Visual C++ MFC 中常用宏的含义(转载) AND_CATCHAND_CATCH AND_CATCH(exception_class,exception ...
- (转载) min()的宏定义中的(void) (_x == _y)的含义
Original Address:http://www.crifan.com/2010/08/13/order_min__macro_definition_void_amp__x__amp__y_th ...
- 借助VC++ UDF Studio探索UDF手册中没有记录的宏
众所周知,Fluent UDF宏十分丰富和繁杂,UDF手册中实际给出的只是一小部分.很多有用的宏在UDF手册中是根本找不到的.例如,做DPM的朋友都知道在UDF手册中可以查到提取DPM颗粒直径.速度的 ...
- c语言编译器自带宏定义,C/C++中内置的宏定义
(1)跨平台的使用 C++:编写跨平台程序的关键,C/C++中的内置宏定义 分两部分: 操作系统判定: Windows: WIN32 Linux: linux Solaris: __sun 编译器判定 ...
- Windows 中 SQLite3 使用(1) -- 配置
如何利用def文件生成相应的lib文件. 原地址 一.SQLite3 简介 SQLite3 是一个开源免费的嵌入式关系数据库,它在 2000 年由 D. Richard Hipp 发布,它不像大型数据 ...
- Linux与Windows中动态链接库的分析与对比
摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...
- 在VC++中访问和修改系统注册表
Windows95/98的注册表包含了Windows95/98的系统配置.PC机的硬件配置.Win32应用程序和用户的其他设置信息.注册表和INI文件不同,它是多层次的树状数据结构,具有六个分支(根键 ...
- VC++6.0中内存泄漏检测 转
最近看了周星星 Blog 中的一篇文章:"VC++6.0中内存泄漏检测",受益匪浅,便运行其例子代码想看看 Output 窗口中的输出结果,可惜怎么弄其输出都不是预期的东西,郁闷了 ...
最新文章
- 看 nova-scheduler 如何选择计算节点 - 每天5分钟玩转 OpenStack(27)
- Express调用mssql驱动公共类dbHelper
- CountDownLatch(线程计数器)
- LeetCode 317. 离建筑物最近的距离(逆向BFS)*
- python 计算机基础
- ubuntu安装scala开发环境
- 统计twitter帖子_在Kubernetes上部署InfluxDB和Grafana以收集Twitter统计信息
- overleaf创建表格
- 两周内股指见底概率大
- Python工作笔记002---PYTHON之DEF函数
- STL源码剖析(侯杰)——读书笔记
- 最新版本启动HBuilderX.exe时,被联想mcafee杀毒软件删除的解决方法
- rdl报表 mysql_SSRS报表服务随笔(rdl报表服务)-创建一个简单的报表
- python typeerror总结_python异常总结解析
- 数据应用服务规划及建设思考
- git 本地分支和远端分支有什么区别?
- 交叉编译cups-2.3.3
- 《图神经网络综述》Graph Neural Networks: A Review of Methods and Applications
- 连锁店客流统计计数器的应用
- thinkjs-redis配置问题
热门文章
- 基于AI在线抠图结合火猴中scalelayout的应用效果展示(提供下载)(firemonkey)
- 后台管理系统 Vue-Element 基础功能
- zed相机拆机_机器人技术:ZED 双目相机内参标定方法
- mysql 创建表 1067,Mysql 错误 1067
- DNS服务(域名解析服务)
- SpringBoot第27讲:SpringBoot集成MySQL - MyBatis 多个数据源
- CSS3选择器:nth-child和:nth-of-type之间的差异——张鑫旭
- 数据库表中,一般什么样的字段适合添加索引
- 4.1 向量空间与子空间
- 基于MVC轻量级的JWT权限验证