在使用一些新版本的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. js 数值格式化函数

    function ForDight(Dight,How){ ,How))/Math.pow(,How); return Dight; } //ForDight(Dight,How):数值格式化函数; ...

  2. android app安全问题设置

    1.应用签名未校验风险:检测 App 程序启动时是否校验签名证书. 2.应用数据任意备份风险 Android 2.1 以上的系统可为 App 提供应用程序数据的备份和恢复功能,该 由 AndroidM ...

  3. POJ 2104:K-th Number(整体二分)

    http://poj.org/problem?id=2104 题意:给出n个数和m个询问求区间第K小. 思路:以前用主席树做过,这次学整体二分来做.整体二分在yr大佬的指点下,终于大概懂了点了.对于二 ...

  4. 在CentOS上安装第三方软件库EPEL

    Extra Packages for Enterprise Linux (EPEL)[企业版 Linux 附加软件包(以下简称 EPEL)]是一个由特别兴趣小组创建.维护并管理的,针对 红帽企业版 L ...

  5. C++ static与单例模式

    单例模式是应用最多的一种设计模式,它要求系统中每个类有且只能有一个实例对象. 主要优点: 1.提供了对唯一实例的受控访问. 2.由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创 ...

  6. seajs +gruntjs 合作开发

    nodejs的出现 让服务器端能运行 js commonjs规范 规范服务器端开发按照什么写法去写 包括模块化开发 ( 不同点 请求在本地 js加载) AMD规范 浏览器端开发的规范 (不同点: 浏览 ...

  7. [河南省ACM省赛-第三届] BUYING FEED (nyoj 248)

    #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> us ...

  8. 利用python 与 wmi 获取WINDOWS基本信息

    #!/usr/bin/env python3.5 # -*- coding:utf8 -*- import platform import subprocess import wmi def serv ...

  9. Android数据库--Sqlcipher的使用(一)

    1.下载官方支持包:https://s3.amazonaws.com/sqlcipher/3.2.0/sqlcipher-for-android-community-v3.2.0.zip Github ...

  10. C#第十天

    1.c#中的访问修饰符 public :公开的公共的 private:私有的,只能在当前类的内部访问 protected:受保护的,只能在当前类的内部以及该类的子类中访问. internal:只能在当 ...