1.WINVER和_WIN32_WINNT
        Visual C++已经不再支持Windows 95, Windows 98, Windows ME, Windows NT or Windows 2000。如果你的WINVER或_WIN32_WINNT宏被指定为以上这些windows版本,你必须修改该宏。当你升级用早期版本的Visual C++写的项目,可能会碰到与WINVER或_WIN32_WINNT宏相关的兼容性错误,如果这些宏被指定为不再支持的windows版本。
        在Windows 95, Windows 98, Windows ME这一分支的操作系统中,Windows的定义的版本宏是_WIN32_WINDOWS。与此同时,Windows重新开发了NT系列,且其编号从NT4.0开始,经过Windows 2000,XP, Server 2003,Vista,Server2008,Win7,Win8,Win10。 在这一分支中,Windows定义的版本宏是_WIN32_WINNT。_WIN32_WINDOWS宏便被废弃了。

WINVER是_WIN32_WINDOWS或_WIN32_WINNT的别名。在SDK的sdkddkver.h中有其定义,可见WINVER<=>_WIN32_WINNT宏的值,如下图所示:

Window各个版本对应的宏值如下图所示:

由于我用的是Win7,所以显示到win7就结束了。

2._MSC_VER
_MSC_VER 定义编译器的版本。下面是一些编译器版本的_MSC_VER值。
MS VC++ 12.0 _MSC_VER = 1800 (Visual C++ 2013)
MS VC++ 11.0 _MSC_VER = 1700 (Visual C++ 2012)
MS VC++ 10.0 _MSC_VER = 1600(Visual C++ 2010)
MS VC++ 9.0 _MSC_VER = 1500
MS VC++ 8.0 _MSC_VER = 1400
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100

在程序中加入_MSC_VER宏可以根据编译器版本让编译器选择性地编译一段程序。例如一个版本编译器产生的lib文件可能不能被另一个版本的编译器调用,那么在开发应用程序的时候,在该程序的lib调用库中放入多个版本编译器产生的lib文件。在程序中加入_MSC_VER宏,编译器就能够在调用的时根据其版本自动选择可以链接的lib库版本,如下所示。

#if _MSC_VER >= 1400 // for vc8, or vc9
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc8-d.lib" )
#elif
#pragma comment( lib, "SomeLib-vc8-r.lib" )
#endif
#elif _MSC_VER >= 1310 // for vc71
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc71-d.lib" )
#elif
#pragma comment( lib, "SomeLib-vc71-r.lib" )
#endif
#elif _MSC_VER >=1200 // for vc6
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc6-d.lib" )
#elif
#pragma comment( lib, "SomeLib-vc6-r.lib" )
#endif
#endif

参考链接:https://msdn.microsoft.com/en-us/library/6sehtctf.aspx

参考链接:http://www.cnblogs.com/zhcncn/archive/2013/05/21/3091052.html

修改WINVER、_WIN32_WINNT和_MSC_VER相关推荐

  1. 关于关于_WIN32_WINNT的说明

    在使用一些新版本的API,或者控件的新特性(比如新版的ComCtl32.dll)的时候,你可能会得到"error C2065: undeclared identifier."这个错 ...

  2. #error: MFC does not support WINVER less than 0x0501.

    解决方法:找到stdafx.h修改WINVER为0x0501

  3. 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序

    一.直接使用VS2012/VS2013/VS2015生成XP兼容的可执行程序 Visual Studio刚发布时没打补丁,称为RTM版,之后会陆续发布补丁,进行bug修复和功能增强.VS2010及之前 ...

  4. Mr.J--C语言编译错误C3861

    标识符: 找不到标识符 即使使用自变量相关的查找,编译器也无法解析对标识符的引用. 备注 若要修复此错误,比较使用标识符到标识符声明的大小写和拼写. 验证范围解析运算符和命名空间using 指令的用法 ...

  5. VC,MFC开发技巧收集

    (mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION); break; } } 十五.改变应用程序的图标 缺 十六.另一种改变窗口标 ...

  6. VC中Windows中一些宏的含义

    https://www.cnblogs.com/zhcncn/archive/2013/05/21/3091052.html 1. _WIN32_WINDOWS,_WIN32_WINNT,WINVER ...

  7. Alphapose - Windows下Alphapose(Pytorch 1.1+)版本2021最新环境配置步骤以及踩坑说明

    文章目录 1 Alphapose 2 环境配置 2.1 官方安装说明 2.2 Anaconda创建虚拟环境Alphapose 2.3 获取Alphapose仓库 2.4 安装相关依赖库 2.4.1 激 ...

  8. fatal error C1083: Cannot open include file: 'uxtheme.h'的解决

    最近做一个系统时,苦于界面比较难看,如果自己从头做起的话,过于烦琐,便上网,寻找合适的界面库,找了多个,发现了一个比较合适的界面库GuiLib(官方网址:www.beyondata.com),这个界面 ...

  9. 37、记录使用 Swin Transformer主干网络去实现分类,并转化NCNN、TNN、MNN模型以及部署

    基本思想:最近手中有个swim transformer模型,想移植手机端进行推理一下,随手记录一下遇到的问题涉及简单的转ncnn tnn mnn的流程性问题 一.首先我fork了大佬的代码https: ...

最新文章

  1. 多视图立体匹配论文分享CasMVSNet
  2. SQLServer中round函数
  3. Linux C 算法分析初步
  4. easyUI学习笔记二
  5. about-ie下模拟input file上传功能失效
  6. 开源/免费数学书大合集:微积分、线代、数分、抽代…数学教授分类整理,精心推荐...
  7. 智能仪器原理及设计C语言,智能仪器仪表课程设计.doc
  8. 在asp.net2.0中使用存储过程
  9. Spring框架IOC的实现
  10. 第三堂:Java程序流程控制
  11. Linux内核编译与安装[转]
  12. 拓端tecdat|R语言使用 LOWESS技术图分析逻辑回归中的函数形式
  13. 【AD15绘制原理图编译的一些警告的处理】
  14. 橙色——网页效果图设计之色彩索引
  15. java的duplicate用法_Java ByteBuffer duplicate()用法及代码示例
  16. Android-Skin-Loader换肤框架剖析
  17. vue 创建桌面应用
  18. Java计算商品的促销日期
  19. .NetCore支付宝支付-服务商模式(saas)
  20. 2015优秀邮件营销人员自我修炼指南

热门文章

  1. hdu1429 胜利大逃亡(续)
  2. 【李峋同款爱心加照片】
  3. Arduino for Esp8266 基础篇之Ticker
  4. 彩虹屁夸人语录 夸人好看的彩虹屁合集
  5. 爬虫 -- 王者荣耀爬虫,爬取每个英雄的皮肤图片
  6. 如何让centos7串口数(ttyS*)大于4个
  7. VS2015支持UTF-8 with BOM编码格式处理中文、西班牙文、法文等非英文字符
  8. JNA释放Memory对象分配的内存
  9. win10计算机显示摄像头,win10系统此电脑添加摄像头(视频设备)图标的操作方法
  10. 每周分享第 31 期