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 
WINVER>=0x0602

Win7

_WIN32_WINNT>=0x0601 
WINVER>=0x0601

Windows Server 2008 R2

_WIN32_WINNT>=0x0601 
WINVER>=0x0601

Windows Server 2008

_WIN32_WINNT>=0x0600 
WINVER>=0x0600

Windows Vista

_WIN32_WINNT>=0x0600 
WINVER>=0x0600

Windows Server 2003

_WIN32_WINNT>=0x0502 
WINVER>=0x0502

Windows XP

_WIN32_WINNT>=0x0501 
WINVER>=0x0501

Windows 2000

_WIN32_WINNT>=0x0500 
WINVER>=0x0500

Windows NT 4.0

_WIN32_WINNT>=0x0400 
WINVER>=0x0400

Windows Me

_WIN32_WINDOWS=0x0500 
WINVER>=0x0500

Windows 98

_WIN32_WINDOWS>=0x0410 
WINVER>=0x0410

Windows 95

_WIN32_WINDOWS>=0x0400 
WINVER>=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中一些宏的含义相关推荐

  1. 视频直播:Windows中各类画面源的截取和合成方法总结

    当今,视频直播技术和实时音视频技术已经是很多行业必备,典型的应用场景有教育直播.远程视频会议.互联网娱乐等.在移动端发起直播,其画面源的种类是十分有限的,无非是取摄像头.截屏等.PC端由于其系统资源充 ...

  2. VC/MFC中常用宏的含义

    VC/MFC中常用宏的含义 Visual C++ MFC 中常用宏的含义(转载)     AND_CATCHAND_CATCH AND_CATCH(exception_class,exception ...

  3. (转载) min()的宏定义中的(void) (_x == _y)的含义

    Original Address:http://www.crifan.com/2010/08/13/order_min__macro_definition_void_amp__x__amp__y_th ...

  4. 借助VC++ UDF Studio探索UDF手册中没有记录的宏

    众所周知,Fluent UDF宏十分丰富和繁杂,UDF手册中实际给出的只是一小部分.很多有用的宏在UDF手册中是根本找不到的.例如,做DPM的朋友都知道在UDF手册中可以查到提取DPM颗粒直径.速度的 ...

  5. c语言编译器自带宏定义,C/C++中内置的宏定义

    (1)跨平台的使用 C++:编写跨平台程序的关键,C/C++中的内置宏定义 分两部分: 操作系统判定: Windows: WIN32 Linux: linux Solaris: __sun 编译器判定 ...

  6. Windows 中 SQLite3 使用(1) -- 配置

    如何利用def文件生成相应的lib文件. 原地址 一.SQLite3 简介 SQLite3 是一个开源免费的嵌入式关系数据库,它在 2000 年由 D. Richard Hipp 发布,它不像大型数据 ...

  7. Linux与Windows中动态链接库的分析与对比

    摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...

  8. 在VC++中访问和修改系统注册表

    Windows95/98的注册表包含了Windows95/98的系统配置.PC机的硬件配置.Win32应用程序和用户的其他设置信息.注册表和INI文件不同,它是多层次的树状数据结构,具有六个分支(根键 ...

  9. VC++6.0中内存泄漏检测 转

    最近看了周星星 Blog 中的一篇文章:"VC++6.0中内存泄漏检测",受益匪浅,便运行其例子代码想看看 Output 窗口中的输出结果,可惜怎么弄其输出都不是预期的东西,郁闷了 ...

最新文章

  1. 看 nova-scheduler 如何选择计算节点 - 每天5分钟玩转 OpenStack(27)
  2. Express调用mssql驱动公共类dbHelper
  3. CountDownLatch(线程计数器)
  4. LeetCode 317. 离建筑物最近的距离(逆向BFS)*
  5. python 计算机基础
  6. ubuntu安装scala开发环境
  7. 统计twitter帖子_在Kubernetes上部署InfluxDB和Grafana以收集Twitter统计信息
  8. overleaf创建表格
  9. 两周内股指见底概率大
  10. Python工作笔记002---PYTHON之DEF函数
  11. STL源码剖析(侯杰)——读书笔记
  12. 最新版本启动HBuilderX.exe时,被联想mcafee杀毒软件删除的解决方法
  13. rdl报表 mysql_SSRS报表服务随笔(rdl报表服务)-创建一个简单的报表
  14. python typeerror总结_python异常总结解析
  15. 数据应用服务规划及建设思考
  16. git 本地分支和远端分支有什么区别?
  17. 交叉编译cups-2.3.3
  18. 《图神经网络综述》Graph Neural Networks: A Review of Methods and Applications
  19. 连锁店客流统计计数器的应用
  20. thinkjs-redis配置问题

热门文章

  1. 基于AI在线抠图结合火猴中scalelayout的应用效果展示(提供下载)(firemonkey)
  2. 后台管理系统 Vue-Element 基础功能
  3. zed相机拆机_机器人技术:ZED 双目相机内参标定方法
  4. mysql 创建表 1067,Mysql 错误 1067
  5. DNS服务(域名解析服务)
  6. SpringBoot第27讲:SpringBoot集成MySQL - MyBatis 多个数据源
  7. CSS3选择器:nth-child和:nth-of-type之间的差异——张鑫旭
  8. 数据库表中,一般什么样的字段适合添加索引
  9. 4.1 向量空间与子空间
  10. 基于MVC轻量级的JWT权限验证