_MSC_VER详细介绍

转自:http://www.cnblogs.com/braver/articles/2064817.html

_MSC_VER是微软的预编译控制。

_MSC_VER可以分解为:

MS:Microsoft的简写。

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

VER:Version的简写。

_MSC_VER的意思就是:Microsoft的C编译器的版本。

微软不同时期,编译器有不同的版本:

MS VC++10.0 _MSC_VER=1600

MS VC++9.0 _MSC_VER=1500

MS VC++8.0 _MSC_VER=1400

......

其中MS VC++10.0就是Visual C++ 2010,MS VC++9.0就是Visual C++2008,MS VC++8.0就是Visual C++2005

在程序中加入_MSC_VER宏可以根据编译器版本让不同版本的编译器选择性地编译一段程序。

查看编译的版本信息,可以在Command line里敲 cl /?

文章二

_MSC_VER定义编译器的版本。常见编译器版本_MSC_VER值:

MSVC++ 11.0 _MSC_VER = 1700 (Visual Studio 2011) 
MSVC++ 10.0 _MSC_VER = 1600 (Visual Studio 2010) 
MSVC++ 9.0  _MSC_VER = 1500 (Visual Studio 2008) 
MSVC++ 8.0  _MSC_VER = 1400 (Visual Studio 2005) 
MSVC++ 7.1  _MSC_VER = 1310 (Visual Studio 2003) 
MSVC++ 7.0  _MSC_VER = 1300 
MSVC++ 6.0  _MSC_VER = 1200 
MSVC++ 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" ) 

  #else if 

  #pragma comment( lib, "SomeLib-vc8-r.lib" ) 

  #endif 

  #else if _MSC_VER >= 1310 // for vc71 

  #ifdef _DEBUG 

  #pragma comment( lib, "SomeLib-vc71-d.lib" ) 

  #else if 

  #pragma comment( lib, "SomeLib-vc71-r.lib" ) 

  #endif 

  #else if _MSC_VER >=1200 // for vc6 

  #ifdef _DEBUG 

  #pragma comment( lib, "SomeLib-vc6-d.lib" ) 

  #else if 

  #pragma comment( lib, "SomeLib-vc6-r.lib" ) 

  #endif 

  #endif

_MSC_VER详细介绍的更多相关文章

  1. [No0000A7]批处理经常用到的变量及批处理>NUL详细介绍

    绝对路径是指调用绝对的程序位置的路径,例如: start C:\Windows\test.exe 相对路径是文件改变路径以后还会按照变量的路径所在位置去调用,例如: start %WINDIR%\te ...

  2. linux配置网卡IP地址命令详细介绍及一些常用网络配置命令

    linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...

  3. php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系

    以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...

  4. RabbitMQ消息队列(一): Detailed Introduction 详细介绍

     http://blog.csdn.net/anzhsoft/article/details/19563091 RabbitMQ消息队列(一): Detailed Introduction 详细介绍 ...

  5. doT.js详细介绍

    doT.js详细介绍   doT.js特点是快,小,无依赖其他插件. 官网:http://olado.github.iodoT.js详细使用介绍 使用方法:{{= }} for interpolati ...

  6. Linux截屏工具scrot用法详细介绍

    Scrot是Linux命令行中使用的截图工具,能够进行全屏.选取等操作,下面小编将针对Scrot截图工具的用法给大家做个详细介绍,通过操作实例来学习Scrot的使用.   在Linux中安装Scrot ...

  7. Oracle Merge into 详细介绍

    Oracle Merge into 详细介绍 /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查 ...

  8. cPage分页详细介绍

    asp.net中各种数据控件,datalist.gridview.Repeater等分页是最常用的功能,几乎任何一个B/S项目,无论是系统还是网站都会用到.分页时,读取整个数据,直接绑定到控件,都可以 ...

  9. 【转载】硬盘MBR详细介绍

    原文地址:http://blog.chinaunix.net/uid-15007890-id-106892.html 硬盘MBR详细介绍      硬盘是现在计算机上最常用的存储器之一.我们都知道,计 ...

随机推荐

  1. soft-margin SVM

    1. soft-margin SVM的形式 其中ξn表示每个点允许的犯错程度(偏离margin有多远),但是犯错是有代价的,也就是目标函数里面要最小化的.c控制对犯错的容忍程度. 2. 推导soft ...

  2. windows 上vmare超卡的问题解决方案

    http://www.cnblogs.com/jlwen/p/3553722.html

  3. 360随身wifi在win10中连不上网络

    找到服务"Wired AutoConfig"和"WLAN AutoConfig"项,点击"启动"按钮,确保使其正常启动. 讲本地网卡共享到移 ...

  4. mmap为什么比read/write快(兼论buffercache和pagecache)

    参考文献: <从内核文件系统看文件读写过程>http://www.cnblogs.com/huxiao-tee/p/4660352.html?utm_source=tuicool& ...

  5. html JS 打开本地程序及文件

    在网页打开本地应用程序示例: 一.在本地注册表自定义协议:以自定义调用Viso为例 1.在HKEY_CLASSES_ROOT下添加项ZVISIO. 2.修改ZVISIO项下的"(默认)&qu ...

  6. vim 使用技巧记录

    vim 使用技巧记录 1.批量注释与取消注释 命令格式:起始行号,结束行号s#^#//#g 例如: 注释代码3到15行,"//"可以是其他的"" :3,15s# ...

  7. 【Django】--基础知识

    一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. Web应 ...

  8. SpringMVC后台接收list类型的数据的实现方式

    一.背景 最近在做一些东西的时候,遇到一个需要Springmvc后台接收list类型数据的需求,几经辗转才完美解决了这个问题,今天记下来方便以后使用,也分享给需要的小伙伴们~ 二.实现方式 1.实现方 ...

  9. 远方的塔--Pylons

    转自:https://en.wikipedia.org/wiki/Pylons_project#Pylons_Framework Pylons

  10. Linux下设置环境变量

    setenv(set environment variable) 功能说明:查询或显示环境变量. 语 法:setenv [变量名称][变量值] 补充说明:setenv为tsch中查询或设置环境变量的指 ...