前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MSVC:fix warning: _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER

MSVC:fix warning: _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER

作者头像
10km
发布2019-05-25 20:59:32
1.5K0
发布2019-05-25 20:59:32
举报
文章被收录于专栏:10km的专栏10km的专栏

版权声明:本文为博主原创文章,转载请注明源地址。 https://cloud.tencent.com/developer/article/1433485

编译一个从旧版本MSVC工程时没头没脑的报了个警告(我的编译器是Visual Studio 2015):

_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)

意思就是没有定义_WIN32_WINNT,所以被缺省定义为_WIN32_WINNT_MAXVER

网上的解决方案都是一样的(参见这个CSDN博客:《_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h》

步骤1

编译时加入_WIN32_WINNT定义

步骤2

代码中include sdkddkver.h,比如在StdAfx.h中添加#include <sdkddkver.h>

代码语言:javascript
复制
#ifndef WINVER
#define WINVER 0x0502
#endif

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0502
#endif
#include <sdkddkver.h>

有了解决方案,总要知道为什么

为什么要加_WIN32_WINNT这个定义呢?

添加这个定义用于显式指定程序运行的平台,比如 _WIN32_WINNT=0x0502就是指定程序运行的平台为Windows Server 2003 with SP1, Windows XP with SP2.(0x0502的定义来源参见本文最后的参考资料链接)

新的VC版本(比如VS2015)不再支持过于旧的Windows平台(比如Windows 95, Windows 98, Windows ME, Windows NT or Windows 2000),如果你要的应用程序要求支持这些旧的平台,就要显式定义_WIN32_WINNT

如果不显式定义_WIN32_WINNT,只要include sdkddkver.h,在sdkddkver.h中会自动定义_WIN32_WINNT为当前MSVC定义的最高可用的windows平台(_WIN32_WINNT_MAXVER )。比如VS2015下会定义为0x0603(_WIN32_WINNT_WINBLUE),那么程序就不能运行在低于这个版本的Window系统上。

Visual C++ no longer supports targeting Windows 95, Windows 98, Windows ME, Windows NT or Windows 2000. If your WINVER or _WIN32_WINNT macros are assigned to one of these versions of Windows, you must modify the macros. When you upgrade a project that was created by using an earlier version of Visual C++, you may see compilation errors related to the WINVER or _WIN32_WINNT macros if they are assigned to a version of Windows that is no longer supported. @https://msdn.microsoft.com/en-us/library/6sehtctf.aspx

参考资料

《Using the Windows Headers》

《Modifying WINVER and _WIN32_WINNT》

《’_WIN32_WINNT’ / ‘WINVER’ : macro redefinition》

《Setting a ‘compatibility’》

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档