error C2065错误带来的操作系统版本问题

Windows新版API往往需要检测系统版本,方便执行不同的API函数,这在vs2008之后的版本似乎更加加强了,这里查阅了资料,看了一下系统宏定义,希望对大家进行软件特别是进行操作系统识别是有好处。

新版本的API,或者控件的新特性(比如新版的ComCtl32.dll)的时候,你可能会得到“error C2065: undeclared identifier.“这个错误。原因是这些功能是依赖于你的操作系统的版本的。而你的头文件中的定义并不是最新的。(对于MFC,就是stdafx.h)下面详细列举了每个Windows版本对应的NTDDI_VERSION_WIN32_WINNTWINVER_WIN32_IE这些宏。

 

The following table describes the preferred macros in use by the Windows header files.

Minimum system required                Macros to define
Windows Server 2008                     NTDDI_VERSION >= NTDDI_LONGHORN
Windows Vista                                NTDDI_VERSION >= NTDDI_VISTA
Windows Server 2003 SP1                 NTDDI_VERSION >= NTDDI_WS03SP1
Windows Server 2003                     NTDDI_VERSION >= NTDDI_WS03
Windows XP SP2                          NTDDI_VERSION >= NTDDI_WINXPSP2
Windows XP SP1                          NTDDI_VERSION >= NTDDI_WINXPSP1
Windows XP                                  NTDDI_VERSION >= NTDDI_WINXP
Windows 2000 SP4                        NTDDI_VERSION >= NTDDI_WIN2KSP4
Windows 2000 SP3                        NTDDI_VERSION >= NTDDI_WIN2KSP3
Windows 2000 SP2                        NTDDI_VERSION >= NTDDI_WIN2KSP2
Windows 2000 SP1                        NTDDI_VERSION >= NTDDI_WIN2KSP1
Windows 2000                                NTDDI_VERSION >= NTDDI_WIN2K

The following table describes the legacy macros in use by the Windows header files.

Minimum system required                 Macros to define
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
 
Internet Explorer 7.0                        _WIN32_IE>=0x0700
Internet Explorer 6.0 SP2                 _WIN32_IE>=0x0603
Internet Explorer 6.0 SP1                 _WIN32_IE>=0x0601
Internet Explorer 6.0                        _WIN32_IE>=0x0600
Internet Explorer 5.5                         _WIN32_IE>=0x0550
Internet Explorer 5.01                        _WIN32_IE>=0x0501
Internet Explorer 5.0, 5.0a, 5.0b          _WIN32_IE>=0x0500
Internet Explorer 4.01                       _WIN32_IE>=0x0401
Internet Explorer 4.0                          _WIN32_IE>=0x0400
Internet Explorer 3.0, 3.01, 3.02        _WIN32_IE>=0x0300 

后附一个科学上网利器,大家懂得!

https://pan.baidu.com/s/1kUuQAnP

你可能感兴趣的:(C++)