29

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

4

4 回答 4

27

WINVER 确定构建您的应用程序所需的最小平台 SDK,这反过来将在编译时确定哪些例程由标头找到。

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

MSDN 关于修改 WINVER 和 _WIN32_WINNT的页面对此进行了更详细的介绍。

于 2009-09-17T16:03:10.383 回答
4

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

于 2009-09-17T16:04:04.960 回答
3

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

于 2009-09-17T16:02:46.430 回答
3

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

于 2009-09-17T16:14:20.923 回答