win7和winxp的_WIN32_WINNT宏

时间:2013-09-19 07:04:03

标签: c++ windows

我在Windows 7上使用VS2012开发代码。它必须在Windows 7和XP上运行。如果我按如下方式设置_WIN32_WINNT宏,我的代码是否会在两者 Windows 7和XP上运行:

#define _WIN32_WINNT 0x0601

2 个答案:

答案 0 :(得分:3)

此处描述_WIN32_WINNT定义 http://msdn.microsoft.com/en-us/library/6sehtctf.aspx

这意味着当你

#include <windows.h>

仅提供由_WIN32_WINNT数字表示的Windows版本中可用的函数原型,因此静态链接。由于编译器仅引用OS中可用于静态链接的函数,因此可执行文件将起作用。

但是,即使您不修改_WIN32_WINNT,只要您只使用目标操作系统中的函数,可执行文件应该可以正常工作,但显然您需要测试它而不是依赖于您自己对哪些函数的知识。并且在每个版本的操作系统中都不可用。

如果您尝试使用仅使用操作系统的更高版本提供的功能的可执行文件,则在运行可执行文件时,您将看到一个消息框,显示“”未找到DLL导入“。

答案 1 :(得分:1)

如果您通过(function ($) { var $scrollContent = $(".img-wrap"); $(window).mousemove(function(e){ var windowWidth = $(window).width(); var contentWidth = $scrollContent.width(); // Calculate the x offset as a percentage of the window width var mouseOffsetPercent = e.pageX / windowWidth; var amountToMoveContent = ( windowWidth - contentWidth ) * mouseOffsetPercent; console.log( amountToMoveContent, mouseOffsetPercent ); $scrollContent.css({ 'transform': 'translateX(' + amountToMoveContent + 'px)' }); }); })(jQuery) 定位Windows版本,则该代码将使用该平台可用的所有功能。这意味着如果你的目标是Windows 7,那么你可以使用某些Win7及以上版本的功能,但这些功能在Windows XP上不可用。通常,您的可执行文件将在Windows 7及更高版本上运行,而不是在Vista或XP上运行。 *

另一方面,如果你的目标是Windows XP,那么你将可以毫无问题地在Windows 7上运行该程序,尽管你可能会错过一些新功能。

如果您需要一个或两个仅在Windows 7中可用的功能,那么有一些技术可以使用_WIN32_WINNT动态加载DLL和函数入口点,以便能够使用新功能但仍能运行XP

*)如果您定位Windows 7并尝试在XP上运行,则不能100%确定会发生什么。只要你在XP中限制自己的功能子集,并且你碰巧幸运地没有使用新的标志值而没有大小发生变化的结构,那么它可能会运行,但当然没有保证。