管窥Visual C++ 2008 Beta 2(Orcas)
管窥Visual C++ 2008 Beta 2 (Orcas )
Visual Studio 2008 Beta 2(开发代号Orcas)已于2007年7月23日发布,这提供了一个很好的机会让大家对新的C++功能先睹为快,在介绍新功能之前,还是要来先看一看整个Orcas产品的。Orcas的出现,表明了Visual Studio之前较短的18-24个月发布周期的回归,相比Visual Studio 2005发布之前的间隙也短得多。更短的发布周期意味着Orcas之后的,某些需要更多开发时间的产品,目前已经接近完成了,也就是多个媒体已经报道过的“Visual Studio Hawaii”。
对Visual C++而言,Orcas更短的发布周期,导致了MSBuild缺乏相关的支持成了最引人关注之处。以前曾经提过,Visual C++项目能在一个MSBuild任务中完成,但在Visual Studio IDE中,无法选择一个Visual C++项目,使它以MSBuild类型生成。微软C++小组也表明,他们正在做大量的内部工作,以对MSBuild提供支持,看起来似乎只有Hawaii才会集成对MSBuild的支持。还有一种可能,就是对Visual C++ MSBuild的命令行支持,会以某种类似PowerToys的方式提供。
本机代码(Native Code )特色
Visual C++ Orcas一个明显变化之处,就是已经内建了对Windows Vista用户账户控制(UAC)的支持。在Visual C++ 2005中,与UAC打交道的唯一方式,就是通过创建一个自定义清单文件,并在生成中包含它(在Visual C++项目属性页,清单工具-输入与输出-额外清单文件设置);而在Visual Studio Orcas中,新的属性设置在链接器-清单文件页(Linker | Manifest File),如图1所示,可为Visual C++程序在UAC设置方面,提供更好地粒度控制。
图1:Visual C++ Orcas UAC支持
随着Windows每次新版本的发布,也会有Visual C++新版本的发布,同时,MFC也相应升级对新的Vista界面提供支持。以往每次Visual C++的发布,都会提供一个对Windows通用控件的MFC包装函数,Visual Studio Orcas也不例外,所有用Visual C++ Orcas创建的新工程,默认都遵从Vista的界面方式。同时,MFC控件也设计提供了对非Vista版本Windows的支持,因此,如果在Orcas中为一个对话框添加一个CFileDialog,而最终程序却安装在一台Windows XP电脑上,程序将会显示旧式风格的对话框。
Visual Studio Orcas中缺少了ATL Server——这个产品已经从Visual C++中挪到了一个在CodePlex上共享源代码的项目中。同样的情况也发生在WTL上,微软希望社区中的开发者为它打好代码基础。
除了Vista的界面之外,Visual C++ Orcas还加入了一个新的链接器选项,以生成可利用地址空间随机排列(ASLR)的执行镜像。地址空间随机排列(ASLR)是Windows Vista的一项新功能,它可阻拦黑客试图通过调用位于已知特定地址的某一函数,来利用某些漏洞。当有ASLR功能的镜像加载时,地址空间随机排列(ASLR)会对其随机重新确定基址,这是一种安全技术,在其他的操作系统,如OpenBSD中也出现过。
要利用ASLR,必须生成一个支持随机基地址的镜像,在Windows平台上,Visual C++ Orcas是第一个支持此技术的编译器,且随机化基地址(/DYNAMICBASE为链接器命令行选项)默认状态下是打开的。
互操作性特色
作为跨越本机代码与 .NET鸿沟的桥梁,Orcas中包含了一些新的功能以使互操作性变得更简单就毫不让人意外了。大众期盼已久的、移植到 .NET的STL这次也跟随Orcas一同发布了,且命名为STL/CLR(STL.NET为当时把STL移植到 .NET平台的项目代号)。STL/CLR结合了C++模板与 .NET的泛型概念,这允许C++程序员在STL容器与算法中使用 .NET类型。
Visual C++ Orcas同时也引入了一种新的调度库(Marshaling Library),由此简化了本机类型与 .NET对应类型之间的转换,同时具有高度的可自定义性。尽管大多数C++程序员已经在互操作编程上做了大量卓越的工作,但调度库的引入,提供了一个通用的机制来完成这些转换,且新的语法非常之简单:
#include
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
