Visual C++ 2005中的突破性变化
2007-04-09 21:34:29 来源:WEB开发网最后,其中的某些变化,是为了增强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这些函数。
如果想继续使用老版本、非安全的函数,可在源代码开始处加上#define value of _CRT_SECURE_NO_DEPRECATE(此处value代表某一数值);然而,还是建议大家升级代码使用新的安全函数。
- ››Visual Basic 2008 数学函数
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››Visual Studio自定义调试窗体两个小技巧
- ››Visual Studio 2005 Team Edition for Database P...
- ››Visual C#两分钟搭建BHO IE钩子
- ››Visual C++优化对大型数据集合的并发访问
- ››VISUAL C++中的OCX控件的使用方法
- ››Visual C++实现视频图像处理技术
- ››Visual C++制作一个Sniffer实例
更多精彩
赞助商链接