在使用一些新版本的API,或者控件的新特性(比如新版的ComCtl32.dll)的时候,你可能会得到“error C2065: undeclared identifier.“这个错误。原因是这些功能是依赖于你的操作系统的版本的。而你的头文件中的定义并不是最新的。

  下面详细列举了每个Windows版本对应的NTDDI_VERSION,_WIN32_WINNT,WINVER,_WIN32_IE这些宏。

下表描述不同版本Windows头文件中推荐使用的宏

  Minimum system required          Macros to define 

  Windows Server                      NTDDI_VERSION >= NTDDI_LONGHORN
  Windows Vista NTDDI_VERSION >= NTDDI_VISTA
  Windows Server SP1 NTDDI_VERSION >= NTDDI_WS03SP1
  Windows Server 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 SP4 NTDDI_VERSION >= NTDDI_WIN2KSP4
  Windows SP3 NTDDI_VERSION >= NTDDI_WIN2KSP3
  Windows SP2 NTDDI_VERSION >= NTDDI_WIN2KSP2
  Windows SP1 NTDDI_VERSION >= NTDDI_WIN2KSP1
  Windows NTDDI_VERSION >= NTDDI_WIN2K

下表描述不同版本Windows头文件中使用的合法宏

  Minimum system required                 Macros to define
  
  Windows Server _WIN32_WINNT>=0x0600
WINVER>=0x0600
  Windows Vista _WIN32_WINNT>=0x0600
WINVER>=0x0600
  Windows Server _WIN32_WINNT>=0x0502
WINVER>=0x0502
  Windows XP _WIN32_WINNT>=0x0501
WINVER>=0x0501
  Windows _WIN32_WINNT>=0x0500
WINVER>=0x0500
  Windows NT 4.0 _WIN32_WINNT>=0x0400
WINVER>=0x0400
  Windows Me _WIN32_WINDOWS=0x0500
WINVER>=0x0500
  Windows _WIN32_WINDOWS>=0x0410
WINVER>=0x0410
  Windows _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, .0a, .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

使用某些Widows API时,明明包含了该头文件,却报错“error C2065: undeclared identifier”的更多相关文章

  1. Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)

    Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...

  2. VC中明明已经添加了头文件却还提示未定义的问题

    我在VS中编译程序遇到这个错误:error C3861: 'ReadDirectoryChangesW': identifier not found, even with argument-depen ...

  3. ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法

    原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebServi ...

  4. CentOS命令登录MySQL时,报错ERROR 1045 (28000):

    CentOS命令登录MySQL时,报错ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解 ...

  5. sublime text3 当运行报错error时,取消显示路径path的方法

    sublime text3 每当运行报错error时,都会出现一长串的path路径,如何不显示呢? 可以通过注释掉Packages/Default/exec.py的四个特定行来更改. 首先,您需要从P ...

  6. 启动Tomcat服务时,出现org.apache.catalina.startup.VersionLoggerListener报错

    启动Tomcat服务时,出现org.apache.catalina.startup.VersionLoggerListener报错解决办法:打开Tomcat安装后目录,进入conf文件夹,找到配置文件 ...

  7. 安装centos6.10时,安装完成重启报错error 15,file not found

    今天在一台老式联想服务器上安装centos6.10操作系统,安装完成,重启时,出现报错 error 15, file not found...... 在百度上搜索到进grub编辑,可还是无法解决问题, ...

  8. linux下编译时的默认库和头文件搜索路径

    链接库路径 默认的链接库路径,定义在搜索/etc/ld.so.conf下的一些路径,其包含了一些重要的系统位置:LIBRARY_PATH, 但如果定义了LD_LIBRARY_PATH, 动态库的搜索路 ...

  9. SonarQube执行代码分析时,报错ERROR: Unable to create symbol table for : /**/*.java java.lang.IllegalArgumentException: Unsupported class file major version 55

    若要转载本文,请务必声明出处:https://www.cnblogs.com/zhongyuanzhao000/p/11686633.html 起因: 最近正在尝试SonarQube的简单使用,但是当 ...

随机推荐

  1. BIEE基本函数

    一,TRIM ,去除空字符 TRIM(EXPR) SUBSTRING("UT TIME"."月份" FROM 6 FOR 2) 1.AGGREGATE AT 此 ...

  2. mysql分享记录

    今天公司进行了一次mysql的分享,做一下记录,也许很多东西很简单,但是对于不知道的人就很难 1.用最小代价存储 举个例子来说,如果能确定某个字段是存数字的,并且数字的大小一定不会超过127或255, ...

  3. Spring Security(15)——权限鉴定结构

    目录 1.1      权限 1.2      调用前的处理 1.2.1     AccessDecisionManager 1.2.2     基于投票的AccessDecisionManager实 ...

  4. angularJS懒加载依赖模块

    //设置 .config [ '$ocLazyLoadProvider' ($ocLazyLoadProvider) -> # We configure ocLazyLoad to use th ...

  5. Java 并发 线程属性

    Java 并发 线程属性 @author ixenos 线程优先级 1.每当线程调度器有机会选择新线程时,首先选择具有较高优先级的线程 2.默认情况下,一个线程继承它的父线程的优先级 当在一个运行的线 ...

  6. 一步步优化JVM二:JVM部署模型和JVM Runtime

    选择JVM部署模型    JVM部署模型的选择总体来说就是决定应用是部署在单个JVM实例还是多个JVM实例上(这里简单举例说明一下JVM实例,比如:我们常用eclipse开发,启动一个eclipse就 ...

  7. 【转】Jmeter(二)-使用代理录制脚本

    Jmeter脚本是以JMX格式为主 Jmeter也是支持录制的,支持第三方录制方式和代理录制方式. 1.第三方录制主要是通过badboy来录制,录制后另存为jmx格式即可. 2.Jmeter也有自己的 ...

  8. MinGW32 +QT4.8.6+QT Creator+CMAKE的安装

    参考网址: http://www.360doc.com/content/15/0813/09/7256015_491331699.shtml http://m.fx114.net/qa-196-213 ...

  9. iOS 富文本点击事件

    #import "ViewController.h" #define font 17 @interface ViewController ()<UITextViewDeleg ...

  10. Redis14--jedis实现主从模式。

    redis的主从模式之前提到过,这里我们使用redis来实现主从模式.首先在VMware虚拟机中的Linux中打开两个终端,一个是用户jack,一个是newuser:然后我们jack作为主机,redi ...