这三个宏其实都是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宏的值。
各系统的宏定义:
系统 宏 windows95 _WIN32_WINDOWS>=0x0400 WINVER>=0x0400 Windows 98 _WIN32_WINDOWS>=0x0410 WINVER>=0x0410 Windows Me _WIN32_WINDOWS=0x0500 WINVER>=0x0500 Windows NT 4.0 _WIN32_WINNT>=0x0400 WINVER>=0x0400 Windows 2000 _WIN32_WINNT>=0x0500 WINVER>=0x0500 Windows XP _WIN32_WINNT>=0x0501 WINVER>=0x0501 Windows Server2003 _WIN32_WINNT>=0x0502 WINVER>=0x0502 Windows Vista _WIN32_WINNT>=0x0600 WINVER>=0x0600 Windows Server2008 _WIN32_WINNT>=0x0600 WINVER>=0x0600 Windows Server2008 R2 _WIN32_WINNT>=0x0601 WINVER>=0x0601 Win7 _WIN32_WINNT>=0x0601 WINVER>=0x0601 Win8 _WIN32_WINNT>=0x0602 WINVER>=0x0602 Win8.1 _WIN32_WINNT>=0x0603 WINVER>=0x0603 win10 _WIN32_WINNT>=0x0A00 WINVER>=0x0A00
二、IE版本_WIN32_IE
Windows XP之前的系统,只支持IE到IE6. 从Windows XP之后,所有的Windows版本都支持IE支持到IE8. IE9不再支持Windows XP(包括Server 2003)。IE10则不再支持Vista。
Minimum version required Minimum value of _WIN32_IE Internet Explorer 10.0 _WIN32_IE_IE100 (0x0A00) Internet Explorer 9.0 _WIN32_IE_IE90 (0x0900) Internet Explorer 8.0 _WIN32_IE_IE80 (0x0800) Internet Explorer 7.0 _WIN32_IE_IE70 (0x0700) Internet Explorer 6.0 SP2 _WIN32_IE_IE60SP2 (0x0603) Internet Explorer 6.0 SP1 _WIN32_IE_IE60SP1 (0x0601) Internet Explorer 6.0 _WIN32_IE_IE60 (0x0600) Internet Explorer 5.5 _WIN32_IE_IE55 (0x0550) Internet Explorer 5.01 _WIN32_IE_IE501 (0x0501) Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE_IE50 (0x0500)
三、_MSC_VER
_MSC_VER定义编译器的版本。下面是一些编译器版本的_MSC_VER值:
_MSC_VER Visual C++ 2013 MS VC++ 12.0 1800 Visual C++ 2012 MS VC++ 11.0 1700 Visual C++ 2010 MS VC++ 10.0 1600 Visual C++ 2008 MS VC++ 9.0 1500 Visual C++ 2005 MS VC++ 8.0 1400 Visual C++ 2003 MS VC++ 7.1 1310 Visual C++ 2003 MS VC++ 7.0 1300 Visual C++ 6.0 MS VC++ 6.0 1200 Visual C++ 5.0 MS VC++ 5.0 1100
四、 _WIN32
32 bit Plarform: #ifdef _WIN32
五、 _Win64
64 bit Plarform: #ifdef _WIN64
六、 _WINDOWS
如果定义了该宏,表明它是一个GUI Application:#ifdef _WINDOWS
七、 _CONSOLE
如果定义了该宏,表明它是一个GUI Application:#ifdef _CONSOLE