Windows中一些版本 宏的含义

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宏的值。

1 #ifndef WINVER
2 #ifdef _WIN32_WINNT
3 // set WINVER based on _WIN32_WINNT
4 #define WINVER          _WIN32_WINNT
5 #else
6 #define WINVER          0x0601
7 #endif
8 #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中,

 1 #define _WIN32_IE_IE20                      0x0200
 2 #define _WIN32_IE_IE30                      0x0300
 3 #define _WIN32_IE_IE302                     0x0302
 4 #define _WIN32_IE_IE40                      0x0400
 5 #define _WIN32_IE_IE401                     0x0401
 6 #define _WIN32_IE_IE50                      0x0500
 7 #define _WIN32_IE_IE501                     0x0501
 8 #define _WIN32_IE_IE55                      0x0550
 9 #define _WIN32_IE_IE60                      0x0600
10 #define _WIN32_IE_IE60SP1                   0x0601
11 #define _WIN32_IE_IE60SP2                   0x0603
12 #define _WIN32_IE_IE70                      0x0700
13 #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:http://baike.baidu.com/view/85144.htm?fromId=703

 1 #ifndef _WIN32_IE
 2     #ifdef _WIN32_WINNT
 3         // set _WIN32_IE based on _WIN32_WINNT
 4         #if (_WIN32_WINNT <= _WIN32_WINNT_NT4)
 5             #define _WIN32_IE       _WIN32_IE_IE50
 6         #elif (_WIN32_WINNT <= _WIN32_WINNT_WIN2K)
 7             #define _WIN32_IE       _WIN32_IE_IE501
 8         #elif (_WIN32_WINNT <= _WIN32_WINNT_WINXP)
 9             #define _WIN32_IE       _WIN32_IE_IE60
10         #elif (_WIN32_WINNT <= _WIN32_WINNT_WS03)
11             #define _WIN32_IE       0x0602
12         #else
13            #define _WIN32_IE       0x0800
14         #endif
15     #else
16         #define _WIN32_IE       0x0800
17     #endif
18 #endif

_MSC_VER 定义编译器的版本。程序中加入_MSC_VER宏可以根据编译器版本让编译器选择性地编译一段程序。(refer to:http://baike.baidu.com/view/1276757.htm

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

转自:http://blog.sina.com.cn/s/blog_4a189c920102uy4q.html

posted on 2018-08-10 17:14  苦涩的茶  阅读(1599)  评论(0)    收藏  举报

// 1.生成目录索引列表