【问题标题】:What is WINVER?什么是WINVER?
【发布时间】:2009-09-17 15:59:23
【问题描述】:

我正在查看一些代码,他们在stdafx.h 文件中有这一行:#define WINVER 0x0501?为什么需要定义WINVER?它如何影响您的代码?谁能解释一下?

【问题讨论】:

    标签: c++ windows header header-files


    【解决方案1】:

    WINVER 确定构建您的应用程序所需的最低平台 SDK,这反过来又会在编译时确定哪些例程可以被标头找到。

    您可以在编译时使用它来验证您的应用程序是否可以在例如 Windows 2000 (0x0500) 或 Windows XP (0x0501) 上运行。

    Modifying WINVER and _WIN32_WINNT 上的 MSDN 页面对此进行了更详细的介绍。

    【讨论】:

    • 较新版本的 Visual Studio 包含用于 C++ 项目的 Target Platform Version 属性。展望未来,这是否旨在替代在源代码中显式定义WINVER
    【解决方案2】:

    WINVER 定义了程序可以运行的最小 Windows 系统。有更详细的解释at MSDN#define WINVER 0x0501 的意思是该程序需要 Windows XP 或 Server 2003 才能运行,因此它可以在该版本之前使用 Windows 功能。

    【讨论】:

      【解决方案3】:

      WINVER 表示 Windows 版本。简而言之,如果您正在为特定版本的 Windows 进行构建,则可以使用一些以前版本中不可用的 API。

      【讨论】:

        【解决方案4】:

        通过定义WINVER 宏,您可以取消隐藏特定于某个 Windows 版本的一组函数。例如,如果您将其定义为#define WINVER 0x0502,您将无法使用仅在Windows Vista 中可用的TaskDialog。有关更多详细信息,您可以阅读 MSDN 中的 Using the Windows Headers 文章。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-09
          • 2019-03-24
          • 2015-03-20
          • 1970-01-01
          • 2019-06-24
          • 2017-04-21
          相关资源
          最近更新 更多