_MSC_VER 是微软公司推出的 C/C++ 编译器在 ANSI/ISO C99 标准之外扩展的宏定义,用来定义当前微软公司自己的编译器的主版本。

_MSC_VER 全称:

MS:Microsoft 的简写 。

C:MSC 就是 Microsoft 的 C编译器 。

VER:Version 的简写 。

编译器的版本:

_MSC_VER 是微软公司推出的 C/C++ 编译器的版本。

下面是一些编译器版本的_MSC_VER值:

MS VC++ 15.0 _MSC_VER = 1910 (Visual Studio 2017)
MS VC++ 14.0 _MSC_VER = 1900 (Visual Studio 2015)
MS VC++ 12.0 _MSC_VER = 1800 (VisualStudio 2013)
MS VC++ 11.0 _MSC_VER = 1700 (VisualStudio 2012)
MS VC++ 10.0 _MSC_VER = 1600(VisualStudio 2010)
MS VC++ 9.0 _MSC_VER = 1500(VisualStudio 2008)
MS VC++ 8.0 _MSC_VER = 1400(VisualStudio 2005)
MS VC++ 7.1 _MSC_VER = 1310(VisualStudio 2003)
MS VC++ 7.0 _MSC_VER = 1300(VisualStudio .NET)
MS VC++ 6.0 _MSC_VER = 1200(VisualStudio 98)
MS VC++ 5.0 _MSC_VER = 1100(VisualStudio 97)

在程序中的使用:

在程序中加入 _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
#endi

引用: