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

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

 2007-04-09 21:34:29 来源:WEB开发网   
核心提示: 8、初始化顺序以往,如果代码中同时有托管与本地全局变量及对象,Visual C++ 2005中的突破性变化(4),那么初始化顺序是不确定的;如代码中存在托管对象与本地对象互操作,就不能保证哪一个对象先初始化了,为与标准兼容,for循环中定义的变量,现在,Visual Stuio 2005可

8、初始化顺序

以往,如果代码中同时有托管与本地全局变量及对象,那么初始化顺序是不确定的;如代码中存在托管对象与本地对象互操作,就不能保证哪一个对象先初始化了。现在,Visual Stuio 2005可保证所有的本地全局变量及对象先初始化,然后才初始化托管全局变量及对象。

9、printf

就目前来说,printf中的%n格式化指示符一般用于指定输出的字符个数。这已经确认为一个安全隐患,并且已禁用,但可以使用set_printf_count_output来启用它;通过传递给set_printf_count_output一个零值(0)可禁用它,而传递任意一个其他值可再次启用。

10、swprintf函数

为与C++标准保持一致,对swprintf函数也作了修改,现在它已遵循C++标准了。在C++中,通过适当的参数,可实现重载;这个函数的老版本已不再建议使用,因为在C中,是不允许重载的,因此如果使用老格式,将会返回一个错误。

编译器中的突破性变化

除了那些会影响到库的变化之外,也有一些变化会影响到编译器。以下是Visual C++ 2005中编译器的主要变化,需再次提醒的是,此处并没有列出所有的变化,但却是微软公司VC++使用者及内部合作者所确认的关键性变化。

指向成员的指针

在之前的版本中,一个指向成员的指针不需使用取址操作符(&)就能获取,现在,Visual C++ 2005已经严格按照标准,必须要使用取址操作符,这也有助于消除潜在的运行时错误。但也导致了MFC库的许多地方需要修改,同时意味着,可能会对现有的程序造成影响。

范围限制规则

在for循环声明中,默认情况下不强制执行范围限制规则。在之前的版本中,for循环中变量的生命期将会延续到循环之外,为与标准兼容,for循环中定义的变量,现在只限定在for循环内使用。

上一页  1 2 3 4 5  下一页

Tags:Visual 突破性 变化

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