网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
详解Visual C++ 2005中的突破性变化
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

   作者:谢启东编译

  Microsoft Visual C++ 2005是微软公司Visual Studio 2005开发套件中的一出重头戏,与前一个版本相比,其革新性的集成开发环境与C++编译器,带来了有许多改变。在本文中,主要讲解程序员在升级程序时,可能会遇到的一些不同之处及变化,而这些变化很可能会使老一点的程序不能通过编译。总之,这些变化绝不是偶然发生的,其背后都有强大的理论依据在支撑,所以,使用Visual C++的程序员,在升级之前,一定要弄清楚这些变化。

  Visual C++中已经发生的变化

  微软Visual C++工作小组在对其产品作出修改之前,已经过充分的考虑,同时也顾及到了这些改变会对以前的代码造成的影响,虽然如此,但有以下理由支持在新版本中作出的这些改变:

  Visual C++ 2005其中一个最重要之处,就是更加遵循ISO C++标准,可更好地跨平台移植代码,或集成进其他工具中,如声明在for循环中的变量生命期及变量类型现在也遵循C++标准了;而且,在默认设置中,就是遵循ISO C++标准的。正是因为此,在一些老代码中,过去可行的一些方法,现在可能要作出必要的修改,才能通过编译了。

  在这几年中,安全性是一个热门的话题,而且在将来也会得来越来越多的重视。C++语言赋于了程序员无所不能的能力,但凡事总有两面性;为减少代码中的安全问题,也为减少代码中错误产生的可能性,Visual C++ 2005作出了一系列的改变,首先,引入了安全CRT及不推荐使用的非安全API等概念,而且在默认状态下,Visual C++ 2005也会进行代码安全检查。

  Visual C++ 2005增强了适用性,这也使得可更方便地升级本身的二进制代码成为可能,而且,也更加容易进行产品的漏洞修补。

  可维护性也是一个促进Visual C++变化的原因之一,例如,低价值的功能已经从产品中消失,以减少在将来维护它们的可能性。一个例子就是,Visual Studio 2005中已经移除了单线程CRT,因为已经不再需要它了,以前为维护单线程CRT所花费的时间,现在可以用在更重要的事情上了。

  最后,其中的某些变化,是为了增强Visual C++编译器的可靠性,为达此目的,微软公司此次保证了Visual C++中有明确定义并一致的行为。

  当然,也要避免某些变化,此次Visual C++的大多数变化都是在代码安全层面上,如果这些变化向后影响到二进制代码的兼容性,那么就会尽量避免,因为源代码兼容性总是在二进制代码兼容性之前被发现的。另外,如果某些变化致使人们不想采用或升级到2005版,那么这种变化也要避免,因为这会导致软件项目的总成本增加。最后,编写代码方式的改变也要在成本上证明是值得的,否则,就没有必要去实现它了。

  Visual C++库的十项突破性变化

  Visual C++ 2005库已经发生了一系列的变化,可能会对现有的程序有所影响,在升级到Visual C++ 2005之前,必须要确定程序中没有这些问题。

  1、参数的有效性

  在C运行时库中,加入了一些代码,以检查参数的有效性。例如:如果传递的目标缓冲区大小不足以strcpy使用--通常这是在冒安全风险,而新版本此时则会调用一个非法参数处理程序。在release版中,会调用Dr.Watson;而在debug版中,会产生断言(assert),当然,只要程序中传递的参数都是有效的,就不会有什么问题了。

  2、对非安全API的警告

  在Visual C++ 2005中,CRT中的一组函数已不再建议使用,而应使用新提供的安全版本。大多数这些不建议使用的函数如果使用不当,将会导致缓冲区溢出或其他安全问题,这些函数如:strcpy、strcat等等。这些函数新的安全版本都在函数名后加了一个_s后缀,以方便识别,如strcpy_s、wcscpy_s、mbscpy_s、calloc_s和strcat_s这些函数。

  如果想继续使用老版本、非安全的函数,可在源

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号