`
huozheleisi
  • 浏览: 1234403 次
文章分类
社区版块
存档分类
最新评论

_MSC_VER

 
阅读更多

#if _MSC_VER > 1000
这是微软的预编译控制。
在_MSC_VER较小时,它对一些东西的支持与新版不同。
_MSC_VER分解如下:
MS:Microsoft(微软)的简写
C:MSC就是Microsoft出的C编译器。
VER:Version(版本)的简写。

全部加在一起就是:Microsoft的C编译器的版本


#if _MSC_VER > 1000//如果MFC的版本大于4.2(可能是4.2,具体4.2与1000之间如何转换不清楚)
#pragma once//这个头文件只编译一次,为了类库的兼容性考虑,像以前的C的类库
#endif // _MSC_VER > 1000//结束条件编译


--------------------------------------------------------------------------------

  _MSC_VER 定义编译器的版本。下面是一些编译器版本的_MSC_VER值(参见扩展阅读中的参考文献2的链接)
  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
  其中MS VC++ 9.0就是Visual C++ 2008,MS VC++ 8.0就是Visual C++ 2005。版本名称上的的对应关系参见扩展阅读中的参考文献1的链接.
  在程序中加入_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
  #elif _MSC_VER >= 1310 // for vc71
  #ifdef _DEBUG
  #pragma comment( lib, "SomeLib-vc71-d.lib" )
  #else if
  #pragma comment( lib, "SomeLib-vc71-r.lib" )
  #endif
  #elif _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更详细的说明请点击阅读扩展阅读中的参考文献3,4的链接。
--------------------------------------------------------------------------------

WIKI:

Microsoft Visual C++,(简称Visual C++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++集成了便利的除错工具,特别是集成了微软视窗程序设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2008。

风格
Visual C++以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加链接著称。这些特征明显缩短程序编辑、编译及链接的时间花费,在大型软件计划上尤其显著。

历史
Visual C++最初叫做Microsoft C/C++。

Visual C++ 1.0,集成了MFC 2.0,是Visual C++第一代版本,1992年推出,可同时支持16位处理器与32位处理器版,可算是Microsoft C/C++ 7.0的更新版本。
Visual C++ 1.5,集成了MFC 2.5,增加了“目标文件链接嵌入 (OLE)2.0和支持MFC的开放式数据库链接(ODBC)。这个版本只有16位的,也是第一个以CD-ROM为软件载体的版本。这个版本也没有所谓“标准版”。它是最后一个支持16位软件编程的软件,也是第一个支持基于x86机器的32位编程软件。
Visual C++ 2.0,集成了MFC 3.0,第一个只发行32位的版本。这个版本提前发行了,几乎成了一个“丢失的版本”。这是因为那个时候Windows 95(开发代码为"Chicago")还没有发行,而Windows NT又只占有很小的市场份额。该版本用户可以通过微软公司的订阅服务(Microsoft Subscription Service)升级至2.1和2.2版本。微软公司在这个版本中集成并升级了Visual C++ 1.5,作为2.0版本(Visual C++ 1.5升级后版本号:1.51)以及2.1版本(Visual C++ 1.5升级后版本号:1.52)的一部分。Visual C++ 2.x附带了16位和32位版本的CDK,同时支持Win32s的开发。Visual C++ 2.2及其后续版本不再升级Visual C++ 1.5(尽管它一直被集成至Visual C++ 4.x)。尽管出生的比Windows 95早,这个版本的发行日期还是非常接近Windows 95,可是当Windows 95发行时,Visual C++ 4.0也已经发行了。因此很多程序开发者直接从1.x过渡到4.0,把2.x跳过去了。
Visual C++ 4.0,集成了MFC 4.0,这个版本是专门为Windows 95以及Windows NT设计的。用户可以通过微软公司的订阅服务(Microsoft Subscription Service)升级至4.1和4.2版本(此版本不再支持Win32s开发)。
Visual C++ 5.0,集成了MFC 4.21,是4.2版以来比较大的一次升级。
Visual C++ 6.0,集成了MFC 6.0,于1998发行。发行至今一直被广泛地用于大大小小的项目开发。但是,这个版本在Windows XP下运行会出现问题,尤其是在调试模式的情况下(例如:静态变量的值并不会显示)。这个调试问题可以通过打一个叫“Visual C++ 6.0 Processor Pack”的补丁来解决。奇怪的是,这个网页强调用户也必须运行Windows 98、Windows NT 4.0、或Windows 2000。
Visual C++ .NET 2002(也即Visual C++ 7.0),于2002年发行,集成了MFC 7.0,支持链接时代码生成和调试运行时检查。这个版本还集成了Managed Extension for C++,以及一个全新的用户界面(与Visual Basic和Visual C#共用)。这也是为什么Visual C++ 6.0仍然被广泛使用的一个主要原因。
Visual C++ .NET 2003(也即Visual C++ 7.1),集成了MFC 7.1,于2003年发行,是对Visual C++ .NET 2002的一次重大升级。
eMbedded Visual C++,用于Windows CE操作系统。Visual C++作为一个独立的开发环境被Microsoft Visual Studio 2005所替代。
Visual C++ 2005(也即Visual C++ 8.0),集成了MFC 8.0,于2005年11月发布。这个版本引进了对C++/CLI语言和OpenMP的支持。
Visual C++ 2008(也即Visual C++ 9.0),于2007年11月发布。这个版本支持.NET 3.5,是目前最新的版本。
Visual C++ 2010(也即Visual C++ 10.0),将于2010年发布。目前仍在开发中,Visual C++开发团队考虑使用SQL Server Compact格式的数据库来存储源码的相关信息[1].本版也加入了现代化的C++并行计算库-Parallel Patterns Library,部分支持C++0x。本版建构于.NET 4.0之上,但仍支持机器码的编译。
当前稳定版本
Visual C++被集成在Visual Studio之中,但仍可单独安装使用。

目前有四种最新版本:

Visual C++ 2008 Express
Visual C++ 2008 Standard标准版
Visual C++ 2008 Professional专业版
Visual C++ 2008 Team System团队系统版
其中Microsoft Visual C++ 2008 Express可从MSDN的网站免费下载使用,并且不限制商业使用。

参见
^ Visual C++ Team Blog.IntelliSense, part 2: The Future.于2008年3月12日查阅.
Microsoft Visual C#
外部链接
(正体中文)Visual Studio Express首页
(正体中文)Visual Studio Express Visual C++ 下载页面
(简体中文)Visual Studio Express首页
(简体中文)Visual Studio Express下载页面
(英文)微软的Visual C++开发者中心
(英文)微软的Visual C++ 开发社区
(英文)Building Win32 Applications Using Visual C++ 2005 Express
(英文)Visual C++ STL Templates Tutorial
(英文)Visual Studio Express首页
(英文)Visual Studio Express下载页面

分享到:
评论

相关推荐

    typeof_common.zip_Boost_boost vc6_msc.dll_typeof

    typeof,编译时获取表达式类型运算符,是gcc编译器的一个扩展(intel编译器 也支持). 笔者最近作一个项目时需要用比较...整个vs系列就只有_MSC_VER==1310这种情况没有作了(我或者同事手头都没这个版本),欢迎大家完善。

    VC++ 加密代码

    很不错加密软件源码#if !defined(AFX_DQPLOT_H__0D536D37_5CF1_11D1_AED1...#if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 // clPlot.h : header file // #define MAXLEGENDS 10 #define MAXSERIES 50

    运动会分数统计 C++

    #if _MSC_VER > 1000 #pragma once #endif #ifndef _INC_EH #define _INC_EH #if !defined(_WIN32) && !defined(_MAC) #error ERROR: Only Mac or Win32 targets supported! #endif #ifdef _MSC_VER // ...

    BCGCBarProMFC25 VS2017编译配置

    BCGCBarProMFC25 默认编译器最高支持到VS2015,要在VS2017环境下使用需要修改项目配置文件和头文件。使用方法:将压缩包中的文件解压到BCG安装源代码位置,使用VS2017打开对应的项目进行编译即可。

    C++EGE: Ballon Ball 动画

    #if defined(_MSC_VER) && (_MSC_VER >= 1200) #pragma once #endif #ifndef __cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #if defined(_INC_CONIO) || ...

    画图工具之Sai,可接触控板

    新手程序,ER是微软公司推出的C/C++编译器在ANSI/...如Visual Studio 2005的Vistual C++版本为8.0,所附带编译器的_MSC_VER定义是1400;目前最新的Visual Studio 2015的Visual C++版本为14.0,相应_MSC_VER为1900。[1]

    头文件免费下载

    #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // TODO: reference additional headers your program requires here //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional ...

    学生考勤管理系统的源代码

    defined(AFX_ATTDLG_H__678D0382_ABEA_11D6_8649_0088CC174723__INCLUDED_) #define AFX_ATTDLG_H__678D0382_ABEA_11D6_8649...#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // AttDlg.h : header file

    可以人机对话的AI小模型

    #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "AdoDBMod.h" class CAdoDB { public: _ConnectionPtr m_pConn; public: BOOL OpenDB(CString strSRC); BOOL OpenAccessDB...

    歌词显示源代码,类似baidu歌曲试听歌词滚动效果,vs2005/vc6.0,mfc

    用mfc写的一个歌词滚动的demo,显示结果类似于baidu的歌曲试听的歌词滚动效果。可以用rar压缩包中release里的exe,先观看效果。 ...不过也可以自己下载gdi+的sdk,把_MSC_VER宏取消,实现阴影效果

    visual c++课程设计出租车管理系统源程序

    #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // LawDlg.h : header file // ///////////////////////////////////////////////////////////////////////////// // CLawDlg dialog class CLawDlg ...

    文档管理系统源码,资源内容还不错,现在分享给大家

    #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CUsers { private: CString Username; CString Pwd; CString JB; public: CUsers(); virtual ~CUsers(); CString ...

    C语言 时钟

    #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers #include <afxwin.h> // MFC core and standard components #include ...

    listview_5.zip

    #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers #include <afxwin.h> // MFC core and standard components #include ...

    如何在程序中判断VS的版本(实现方法详解)

    代码如下所示: ..._MSC_VER实际就是 Microsoft visual c++ version(是微软的预定义宏). 具体对应如下:  MS VC++ 14.0 _MSC_VER = 1900(VS2015)  MS VC++ 12.0 _MSC_VER = 1800(VS2013)  MS VC

    vc StdAfx头文件

    #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers #include <afxwin.h> // MFC core and standard components #include ...

    Flex实例 自绘图形按钮

    NULL 博文链接:https://guangqiang.iteye.com/blog/802589

    酒店管理系统源码(VC)

    #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "CoolTabBar.h" #include "CoolListBox.h" #include ".\\3D-MaxTab\\RollupCtrl.h" #include ".\\coolmenu\\CoolMenu.h" #include ".\\...

    tree代码的实现与简单应用

    #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #ifndef __AFXWIN_H__ #error include 'stdafx.h' before including this file for PCH #endif #include "resource.h" // main symbols //////////...

    文本文件解析源代码fileParse

    #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class fileParse { public: double getIndexDouble(int index); bool isInteger(int index); void writeFile(const char *filename); double* ...

Global site tag (gtag.js) - Google Analytics