开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2011.02.26
.NET成败事关微软生死,微软全力以赴,无暇他顾。鉴于在Windows平台上VisualC++的优势地位一时无人能敌,且C++新标准一再难产,因此微软没有动力同时也很难对C++做些什么,结果,从VisualStudio.NET一直到VisualStudio2008,微软对VisualC++的本地应用(非托管应用)开发能力的升级基本是虚应故事。其间,微软在VisualC++上投入的精力主要是让C++访问.NET设施以及与其他.NET语言交互。在最初推出的ManagedC++大获全败后,HerbSutter入主VisualC++团队,担任C++/CLI架构师,目的仍然是为C++访问.NET提供通道,而非对C++本身的改进。随着.NET平台不断发展壮大,逐渐占据企业应用开发半壁江山,微软已经度过了.NET发展的焦躁期,终于能腾出手来重振VisualC++。
2010年2月10日,微软发布了VisualStudio2010发布候选版,预示着VisualStudio2010正式版的发布已进入读秒阶段。在发布候选版中,从丰乳肥臀般的启动画面,到体贴入微、近乎献媚的源代码编辑器,都表明微软对软件用户体验的理解又上了一个档次。VisualStudio2010毫无疑问具备秒杀微软阵营开发人员的魅力。无论是Windows、Office、Web、移动智能设备应用开发,还是并行计算、云计算应用开发,都得到了增强甚至崭新的支持。对于C++的新增支持则是微软营销VisualStudio2010时有意无意都要提及的一点。
*static_assert关键字:编译期断言。若断言失败,则编译失败并产生编译期错误诊断消息。
*nullptr关键字:一个专门的空指针值,表示一个指针变量或对象句柄不指向任何对象。
在库方面,VisualStudio2010除了对STL、ATL、MFC等库进行修补和完善外,还新增了一些库,比较重要的特性如下:
*PPL(ParallelPatternLibrary,并行模式库):在已经到来的多核CPU时代,PPL为C++程序员编写并行计算代码提供了方便。PPL由并行算法、并行容器和任务并行机制组成。并行算法是一组并行处理数据集合的泛型算法;并行容器是一种泛型容器,提供了并行访问元素的能力;任务并行机制则提供了并行执行多任务的机制。
*CTaskDialog类:MFC的一个新增特性。利用CTaskDialog而不是AfxMessageBox创建的消息框可以向用户显示更丰富的信息。
*重启管理器(RestartManager):可以为软件提供灾难恢复功能。当应用程序意外关闭或重启时,重启管理器可以用于自动保存文档并重启应用,当应用程序被自动更新时,也可以使用重启管理器启动应用。在创建MFC应用时,程序员可以利用向导也可以手工为应用程序添加该项功能。
*SafeInt库:用于各种类型的整数算术运算,可以自动侦测运算过程中可能发生的整数溢出或除零错误。
对于大多数C++程序员而言,VisualStudio2010对IDE的增强可能比对语言和库的增强更有吸引力。强大、友好的IDE能够极大地提高程序员的开发效率,缩短软件产品的开发周期。采用了WPF技术开发的VisualC++2010IDE新增了大量的新特性,例如:
*改良的智能感知错误信息:IDE可以更好地侦测可能导致丧失智能感知功能的错误,并在出错代码下面显示红色的波浪线,同时将智能感知错误信息显示在错误列表窗口中。程序员双击错误列表窗口的错误信息行就可以定位到出错代码。
*MFC类向导重装上阵:对于MFC程序员来说绝对是一个好消息,该向导可以方便地创建类、消息和变量等,而无需手工修改各个代码文件。
以下是笔者个人喜欢的两个小功能,由VisualStudio2010IDE提供,并非仅针对VisualC++:
*文本编辑区缩放:既支持Ctrl+鼠标滚轮无级缩放,也可利用左下角的下拉框缩放。该功能简单、实用。不仅便于演示和交流,也便于开发者迅速定位到指定代码。
*调用层次窗口:通过该窗口可以方便地查看函数和成员函数的调用关系。
另外,VisualStudio2010支持多显示器,即可以将IDE中的多个窗口浮动显示在不同的显示器上。虽然不知道究竟会有多少程序员使用这个功能,不过显然这个功能很有趣,至少可以让程序员干活时显得更有范儿。
还有一些其他方面的改进。例如在项目构建方面,VisualC++2010解决方案和项目改用MSBuild(而不是VCBUILD)进行构建。MSBuild是一种基于XML的构建工具,具有更大的灵活性和更好的扩展性,至此,MSBuild真正成了VisualStudio所有语言类型的项目的通用构建工具。此外,VisualC++2010在编译器、连接器以及辅助工具等方面也做了一些完善。
不过,令人遗憾的是,VisualStudio2010仍未像对C#那样直接提供对C++代码的重构支持,仍然需要辅以VisualAssistX这样的第三方插件。按照道理讲,以微软的资源提供对C++代码的重构功能并非难事,收购VisualAssistX不能说易如反掌,至少不差钱,但微软并没有这么做,或者说没有把事情做绝,虽然有它自己的考虑,但仍然让人感到一丝不爽。