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

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

 2007-04-09 21:34:29 来源:WEB开发网   
核心提示: wchar_t类型现在,wchar_t已为默认内置类型,Visual C++ 2005中的突破性变化(5),这就是说,也许在以前,以确认代码能通过编译,否则,wchar_t可能会被当作一个unsigned short,因为它还不是内置类型

wchar_t类型

现在,wchar_t已为默认内置类型。这就是说,也许在以前,wchar_t可能会被当作一个unsigned short,因为它还不是内置类型,所以,当与那些有wchar_t类型变量的文件作符号比较时,很可能会导致问题。在Visual C++ 2005中,wchar_t已是一个内置类型,也就是说,需要确定以前对wchar_t的用法不会导致转译为一个unsigned short。

异常处理

为了与库的变化保持一致,编译器已作了一些修改,以便不会捕捉到结构化异常。所以,为与以前代码保持兼容,还是应该使用/EHa。

参数属性

为了提供更健壮的属性--也是为了代码的健壮性,编译器现在将会检查类型、枚举等等的属性。这意味着,以前的代码可能会在属性方面碰到一个从未有过的编译器错误。

默认为int

为遵循C++标准,对没有类型声明的变量或函数,已不再默认为int类型。但在C语言中仍然可以,C++语言中已不行。这甚至也影响到了微软公司自身的代码,包括NT系统的代码,所以最好的方式,还是显式声明。

关于C的托管代码

C语言编译器一般不可能创建CLR的托管代码,因为C语言不是面向对象的,它不符合CLR所使用的模型,因此,任何以C语言来编译的代码都会与CLR编译器设置冲突。例如,如果在编译时使用/TC设置,而且又设置了CLR,就会导致冲突。

面向CLR的新语法

通过设置/clr编译选项,C++编译器只接受新语法。这将强制推广加入到Visual C++ 2005中的新语法,同时,也会废弃掉老代码。

安全检查

在安全越来越得到重视的今天,安全检查选项/GS,在默认情况下就是打开的,还是有一定道理的。在Visual C++ 2005中,默认情况下将会使用/GS选项。

结论

本文列出了微软公司已确认的Visual C++ 2005中的一些关键性变化,虽然不是所有的变化,也不是最有可能冲击到代码的变化,但此处所列出的项目,将最有可能导致问题的产生。

归根结底,在升级或用新版编译器对程序作修改之前,必须先试着编译现有程序,以确认代码能通过编译,否则,就不可避免要动手修正源代码中存在的问题。

上一页  1 2 3 4 5 

Tags:Visual 突破性 变化

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