auto 关键字具有新的默认含义。由于使用旧含义的情况很少见,因此大多数应用程序都不会受此更改影响。
引入了新的 static_assert 关键字,如果代码中已经存在具有某个名称的标识符,则此关键字将导致名称冲突。
对新 lambda 表示法的支持不支持对 IDL uuid 特性中未加引号的 GUID 进行编码。
.NET Framework 4 引入了损坏状态异常概念,这些异常会导致进程处于无法恢复的损坏状态。默认情况下,即使使用捕获所有其他异常的 /EHa 编译器选项,也无法捕获损坏状态异常。
若要显式捕获损坏的状态异常,请使用 __try-__except 语句。或者,应用 [HandledProcessCorruptedStateExceptions] 特性以允许使用函数捕获损坏状态异常。
此更改主要影响可能必须捕获损坏状态异常的系统程序员。八个此类异常为 STATUS_ACCESS_VIOLATION、STATUS_STACK_OVERFLOW、EXCEPTION_ILLEGAL_INSTRUCTION、EXCEPTION_IN_PAGE_ERROR、EXCEPTION_INVALID_DISPOSITION、EXCEPTION_NONCONTINUABLE_EXCEPTION、EXCEPTION_PRIV_INSTRUCTION 和 STATUS_UNWIND_CONSOLIDATE。有关这些异常的更多信息,请参见 GetExceptionCode 宏。
修改后的 /GS 编译器选项可防止此版本中的缓冲区溢出比早期版本中的更广泛。此版本可能会在可降低性能的堆栈中插入附加的安全检查。使用新 __declspec(safebuffers) 关键字可指示编译器不对特定函数插入安全检查。
如果使用 /GL(全程序优化)和 /clr(公共语言运行时编译)编译器选项进行编译,则忽略 /GL 选项。进行此更改是因为组合使用编译器选项没有什么优点。进行此更改后,生成的性能得到了改进。
默认情况下,在 Visual C++ 2010 中禁用对三字符组的支持。使用 /Zc:trigraphs 编译器选项可启用三字符组支持。三字符组由两个连续的问号(“??”)及后跟的第三个唯一字符组成。编译器会将三字符组替换为相应的标点字符。例如,编译器会将“??=??三字符组替换为“#”字符。对于使用的字符集未包含某些标点字符的便捷图形表示形式的 C 源文件,可在其中使用三字符组。
链接器不再支持对 Windows 98 进行优化。如果指定 /OPT:WIN98 或 /OPT:NOWIN98,则 /OPT(优化)选项将会产生编译时错误。
由“RuntimeLibrary”和“DebugInformationFormat”生成系统属性指定的默认编译器选项已发生更改。默认情况下,在由从 7.0 到 10.0 版本的 Visual C++ 创建的项目中将会指定这些生成属性。 如果迁移由 Visual C++ 6.0 创建的项目,请考虑是否为这些属性指定值。
在 Visual C++ 2010 中,“RuntimeLibrary”设置为“MultiThreaded (/MD)”,“DebugInformationFormat”设置为“ProgramDatabase (/Zi)”。在 Visual C++ 9.0 中,“RuntimeLibrary”设置为“MultiThreaded (/MT)”,“DebugInformationFormat”设置为“Disabled”。
公共语言运行时 (CLR)

Microsoft C# 和 Visual Basic 编译器现在可以生成“非主互操作程序集”(非 PIA)。非 PIA 程序集可以使用 COM 类型而无须部署相关主互操作程序集 (PIA)。使用由 Visual C# 或 Visual Basic 生成的非 PIA 程序集时,在引用使用库的任何非 PIA 程序集之前,必须在编译命令中引用 PIA 程序集。
Visual C++ 项目和 MSBuild
Visual C++ 项目现在基于 MSBuild 工具。因此,项目文件会使用新 XML 文件格式和 .vcxproj 文件后缀。Visual C++ 2010 会自动将项目文件从 Visual Studio 早期版本转换为新文件格式。
如果某个现有项目依赖于先前的生成工具 VCBUILD.exe 或项目文件后缀 .vcproj,该项目将受影响。
在早期版本中,Visual C++ 支持属性表的后期计算。例如,父属性表可以导入子属性表,然后父属性表可以使用子属性表中定义的变量来定义其他变量。利用后期计算,即使在导入子属性表之前,父属性表也可以使用子变量。在 Visual C++ 2010 中,不能在定义项目表变量之前使用该变量,因为 MSBuild 仅支持早期计算。
集成开发环境

“应用程序终止”对话框不再终止应用程序。
在以前的版本中,当 abort() 或 terminate() 函数关闭应用程序的零售内部版本时,C 运行库将在控制台窗口或对话框中显示应用程序终止消息。该消息的部分内容为,“此应用程序已请求运行时以异常方式终止它。请与应用程序技术支持团队联系,以便获得更多信息。”
应用程序终止消息是多余的,因为 Windows 随后显示了当前终止处理程序,它通常是“Windows 错误报告”(Dr.Watson) 对话框或 Visual Studio 调试器。从 Visual Studio 2010 开始,C 运行库将不显示该消息。而且,运行时还将阻止应用程序在调试器启动前终止。
仅当您依赖于应用程序终止消息的以前行为时,才会进行此重大更改。
对于 Visual Studio 2010 具体而言,IntelliSense 无法用于 C++/CLI 代码或特性,“查找所有引用”无法用于本地变量,且代码模型不会从导入的程序集检索类型名称或者将类型解析为其完全限定名。
Visual C++ 库

SafeInt 类现在包括在 Visual C++ 中,不再需要单独下载。仅当您开发了一个也称为“SafeInt”的类时,才会进行此重大更改。
库部署模型不再基于“合成”机制,且不再使用清单。实际上,每个动态链接库的名称包含其版本号。
标准模板库

标头不再自动包含在许多其他头文件中。但是,如果您需要 标头中定义的独立迭代器支持,则会显式包含该标头。
在 标头中,移除了 checked_* 和 unchecked_* 函数。此外还在 标头中,移除了 checked_iterator 类并增加了 unchecked_array_iterator 类。
移除了 CComPtr::CComPtr(int) 构造函数。该构造函数允许从 NULL 宏构造 CComPtr 对象,但不是必需的,还允许从非零整数构造无意义结构。
CComPtr 仍可从定义为 0 的 NULL 进行构造,但如果从文本 0 以外的整数构造,则会失败。您最可能在以下伪代码描述的情况中遇到此问题。
复制
pair> myVar;
myVar = make_pair(x, NULL);
若要修复第二个语句,请使用 nullptr 关键字来替代 NULL 宏。
复制
myVar = make_pair(x, nullptr)
移除了以下 ctype 成员函数:ctype::_Do_narrow_s、ctype::_Do_widen_s、ctype::_narrow_s 和 ctype::_widen_s。如果应用程序使用上述任一成员函数,则必须将其替换为对应的非安全版本:ctype::do_narrow、ctype::do_widen、ctype::narrow 或 ctype::widen。
CRT、MFC 和 ATL 库

已移除用户支持,以生成 CRT、MFC 和 ATL 库。例如,未提供相应的 nmake 文件。但是,用户仍对这些库的源代码具有访问权限。并且将可能在 Visual C++ 团队博客中发表一篇文档,其中描述 Microsoft 用来生成这些库的 MSBuild 选项。
已移除对 IA64 的 MFC 支持。但是,仍提供对 IA64 的 CRT 和 ATL 支持。
MFC 模块定义 (.def) 文件中不再重用序号。此更改意味着,次要版本间的序号将相同,且 Service Pack 和快速修补工程版本的二进制兼容性将得到改进。
CDocTemplate 类中添加了一个新的虚函数。这一新的虚函数为 CDocTemplate::OpenDocumentFile。OpenDocumentFile 的早期版本具有两个参数。而新版本具有三个参数。若要支持重新启动管理器,派生自 CDocTemplate 的任何类都必须实现具有三个参数的版本。有关此函数的更多信息,请参见 CDocTemplate::OpenDocumentFile。新参数为 bAddToMRU。
宏和环境变量

不再支持环境变量 __MSVCRT_HEAP_SELECT。已移除此环境变量,且没有替换变量。
Microsoft Macro Assembler Reference
从 Microsoft Macro Assembler 编译器中移除了多个指令。移除的指令包括 .186、.286、.286P、.287、.8086、.8087 和 .NO87。

VC 2010的重大变化的更多相关文章

  1. VC++2010下编译STLport,Boost

    VC++2010下编译STLport,Boost 最近在想向Boost转移,努力掌握Boost代码的过程中, STLport版本:5.2.1 Boost版本:1.4.6.1 (1.4.7.0也OK) ...

  2. VC++2010配置使用MySQL5.6

    0.前提 安装后的文件概览 编译器:  VC++2010 MySQL版本:MySQL5.6.19 for win64 Connector版本:connector  c++  1.1.3 在VS2010 ...

  3. VC#2010 视图设计器无法打开 问题的正解

    继上次VC#2010中视图设计器无法打开的问题的讨论后,我感觉每次都重新安装一次安装包未免也太麻烦了,程序员的时间都灰常宝贵. 所以在这次人工智能作业的时候,找到了一个简单的途径: 打开VC#2010 ...

  4. Systemc在VC++2010安装方法及如何在VC++2010运行Noxim模拟器

    Systemc在VC++2010的安装方法可以参考文档"Systemc with Microsoft Visual Studio 2008.pdf".本文档可以在"htt ...

  5. VC++2010组件安装失败解决办法

    安装SQLSERVER时,安装不上,总是报错说 VC++2010组件安装错误. 单独安装时,也会报出严重错误无法安装.就是下面这两个 最后到网上找到一个办法解决了:如下: 下载这个软件 Microso ...

  6. Installshield 2010 中集成. Net framework4 与 vc++ 2010运行安装包

    1.prq的地址,通过以下地址,下载相应的prq文件 VC 2010 redist X86: http://saturn.installshield.com/is/prerequisites/micr ...

  7. 配置VC++2010的glut库

    VC++2010是一个成熟稳定的版本,微软的编译工具Visual Studio系列从VC6到如今的VC2019,功能非常强大,我们在开始学习C++和计算机图形学的时候,一般入手<<C++P ...

  8. VC++ 2010 创建高级Ribbon界面详解(1)

    运用 VC++ 2010 创建高级 Ribbon 界面详解,包括 Ribbon 界面的结构层次.Ribbon 控件的使用等,ribbon 用户界面,ribbon interface ,ribbon 高 ...

  9. VC 2010 Express 学生版(中文版)

    Microsoft Visual C++ 2010 Express 学生版 下载传送门(提取码:r7sm) 如何安装 拿到压缩文件后,解压到桌面(别怕,安装完后这个文件夹是可以删除的). 在 &quo ...

随机推荐

  1. Nmcli 网络管理命令行工具基础

    介绍 在本教程中,我们会在CentOS / RHEL 7中讨论网络管理命令行工具NetworkManager command line tool,也叫nmcli.那些使用ifconfig的用户应该在C ...

  2. missing locales

    原文地址:http://codewut.de/content/missing-locales-under-debian This drives me crazy! Every time I deboo ...

  3. HTTP权威指南阅读笔记五:Web服务器

    Web服务器会做些什么: 1.建产连接:接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭. 1)处理新连接 2)客户端主机名识别 3)通过ident确定客户端用户 ident在组织内 ...

  4. [stm32] MPU6050 HMC5883 Kalman 融合算法移植

    一.卡尔曼滤波九轴融合算法stm32尝试 1.Kalman滤波文件[.h已经封装为结构体] /* Copyright (C) 2012 Kristian Lauszus, TKJ Electronic ...

  5. [外挂1] MFC 鼠标位置设置

      a.取得窗口相对坐标  b.读出游戏窗口信息GetWindowRect c.移动鼠标指针SetCursorPos HWND gameh;//游戏窗口句柄 RECT r1;//RECT结构表示一个矩 ...

  6. [ACM_图论] Fire Net (ZOJ 1002 带障碍棋盘布炮,互不攻击最大数量)

    Suppose that we have a square city with straight streets.  A map of a city is a square board with n ...

  7. tomcat通过conf-Catalina-localhost目录发布项目详解

    Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目,是最佳选择. 因为这样对tomcat的入侵性最小,只需 ...

  8. JS几种数组遍历方式以及性能分析对比

    前言 这一篇与上一篇 JS几种变量交换方式以及性能分析对比 属于同一个系列,本文继续分析JS中几种常用的数组遍历方式以及各自的性能对比 起由 在上一次分析了JS几种常用变量交换方式以及各自性能后,觉得 ...

  9. 深入理解HTML5:语义、标准与样式(勇猛精进早登大师殿堂创最优品质交互)

    深入理解HTML5:语义.标准与样式(勇猛精进早登大师殿堂创最优品质交互) [美]布拉德福(Bradford,A.) [美]海涅(Haine,P.)著 高京译 ISBN 978-7-121-20552 ...

  10. Jquery对文本框的值、字符串的验证;正则表达式字符串的验证

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...