栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

VS宏

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

VS宏

VS宏_MSC_VER的简介与使用方法
  • 1、背景
  • 2、简介
  • 3、编译器对应的VS版本
  • 4、编译程序
  • 5、参考

1、背景

从事Windows下开发的编程人员想必对宏_MSC_VER不陌生,会经常在Visual Studio 中见到,而对于我们开发人员为了保证程序代码可以支持不同的编译器编译,对宏_MSC_VER的使用就变得尤为重要。

2、简介

_MSC_VER是微软公司推出的C/C++编译器在ANSI/ISO C99标准之外扩展的宏定义,用来定义当前微软公司自己的编译器的主版本。需要注意的是,这并不是Visual Studio 的版本号,也不是Visual C++的版本号。如Visual Studio 2005的Vistual C++版本为8.0,所附带编译器的_MSC_VER定义是1400;最新的Visual Studio 2015的Visual C++版本为14.0,相应_MSC_VER为1900。

_MSC_VER是微软的预编译控制。
_MSC_VER可以分解为:
MS:Microsoft的简写。
C:MSC就是Microsoft的C编译器。
VER:Version的简写。
_MSC_VER的意思就是:Microsoft的C编译器的版本。

3、编译器对应的VS版本

_MSC_VER 经常在代码中出现,_MSC_VER 用来定义编译器的版本,针对不同的编译器预定义的 _MSC_VER 值,来执行不同的操作。

编译器版本_MSC_VER值Visual Studio 版本
MS VC++ 16.0_MSC_VER = 1928Visual Studio 2019
MS VC++ 15.0_MSC_VER = 1910Visual Studio 2017
MS VC++ 14.0_MSC_VER = 1900Visual Studio 2015
MS VC++ 12.0_MSC_VER = 1800Visual Studio 2013
MS VC++ 11.0_MSC_VER = 1700Visual Studio 2012
MS VC++ 10.0_MSC_VER = 1600Visual Studio 2010
MS VC++ 9.0_MSC_VER = 1500Visual Studio 2008
MS VC++ 8.0_MSC_VER = 1400Visual Studio 2005
MS VC++ 7.1_MSC_VER = 1310Visual Studio 2003
MS VC++ 7.0_MSC_VER = 1300Visual Studio .Net
MS VC++ 6.0_MSC_VER = 1200Visual Studio 98
MS VC++ 5.0_MSC_VER = 1100Visual Studio 97

其中MS VC++ 14.0表示Visual C++的版本为14.0,后面括号中的Visual Studio 2015,表明该VC++包含在微软开发工具Visual Studio 2015中。
另外,可以通过当前使用的MS VC++编译器的版本信息来推断当前编译器预定义的 _MSC_VER 值。_MSC_VER 的值是由 MS VC++编译器的主版本号和次版本号构成的,其中主版本号是以“.”分割的版本号信息中的第一部分,而次版本号为其中的第二部分。例如,假设当前那使用的Visual C ++编译器的版本号是15.00.20706.01(MS VC++ 2008),那么其主版本号就是为“15”,而次版本号就是为“00”,因此当前编译器预定义的 _MSC_VER 宏的值就为1500。

4、编译程序

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

下面展示一些示例代码:

// An highlighted block
#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
5、参考

链接: https://baike.baidu.com/item/_MSC_VER/9468279?fr=aladdin.
与此关联的还有两个相关宏_MSC_FULL_VER和_MSC_BUILD,具体可以自行查询相关资料。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023608.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号