WEB开发网
开发学院软件开发VC Visual C++ 2005中的突破性变化 阅读

Visual C++ 2005中的突破性变化

 2007-04-09 21:34:29 来源:WEB开发网   
核心提示: 3、迭代器越界受检查的迭代器(checked iterators)和调试迭代器(debug iterators)也因为安全的原因进行了相应的更新,如果迭代器越界,Visual C++ 2005中的突破性变化(3),则相应会调用一个非法参数处理程序,再次提醒,如果想与以前版本的Visual

3、迭代器越界

受检查的迭代器(checked iterators)和调试迭代器(debug iterators)也因为安全的原因进行了相应的更新,如果迭代器越界,则相应会调用一个非法参数处理程序。

再次提醒,可以通过抛出一个越界异常来避免产生非法参数问题。在代码中加入#define value of _SECURE_SCL_THROWS,并把value值设为1,这样就不会调用非法参数处理程序,而是产生一个异常了。

也可以通过设置#defined value of _SECURE_SCL值为零,关闭此迭代器检查,通常默认情况下,此选项是打开的。

4、time_t类型

time_t类型通常用于显示从1970年开始以来的秒数。直到Visual C++ 7.1(即Visual C++ .NET 2003),time_t类型都被定义为一个long,而到了Visual C++ 2005中,已被定义为一个64位类型,可用于显示一直到3000年的时间了。

5、链接到CRT

托管应用程序现在不能静态链接到CRT。以往,在Visual C++ 7.0和7.1中(指Visual Studio .NET 2002与2003),可以生成静态链接到CRT的CLR程序,而在Visual Studio 2005却行不通。

6、单线程CRT支持

在Visual Studio 2005中,已经取消了单线程CRT支持。而且用发展的眼光来看,未来大多数的人还是愿意使用线程安全的多线程代码。

在线程中,可使用_nolock后缀来优化代码,但同时,这些函数是非线程安全的。

7、异常处理

有两种类型的异常处理可供选择:/EHa(异步的)和/EHs(同步C++异常)。在以前,如果使用了/EHs,那么在一个catch(…)块中,也许可能、也许不可能捕捉到结构化异常,因为此行为是没有定义且不可靠的;现在,再使用/EHs时,就可保证不会捕捉到结构化异常。如果想与以前版本的Visual C++保持一致,并且捕捉异步结构化异常,还是应该在编译时使用/EHa。

上一页  1 2 3 4 5  下一页

Tags:Visual 突破性 变化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接