|
|
1
6
我刚刚通过VS2005将一个相对较大的代码库从VS2003迁移到VS2008,我发现的大多数问题都是常量/非常量问题,比如将返回常量char*的函数的返回值赋给char*。VS2005和VS2008在const正确性方面都要挑剔得多,如果您现有的代码库在const正确性方面有点马虎,对不起,老派,您会看到很多这样的情况。 一个非常受欢迎的变化是,VS2005中的模板支持明显优于VS2003(它本身是对早期版本的一个重大改进),这使我能够为模板相关的问题提供一些解决方法,这些问题是团队自VC++4.x的令人兴奋的日子以来一直在拖延的。 您可能会遇到的一个问题是关于“不推荐使用”或“不安全”函数的大量警告,尤其是在使用C字符串函数时。其中很多都是“被微软弃用的”(只是它们省略了“被微软”的部分),并且仍然是完全可用的,但它们是已知的缓冲区溢出的潜在来源。在我转换的项目中,我设置了预处理器define _CRT _SECURE _NO _警告,并禁用了警告C4996以关闭这些有点烦人的消息。 我们遇到的另一个问题是MS在VS2005或VS2008中更改了默认的时间大小(抱歉,我不记得了-它肯定在VS2008中,但可能已经在VS2005中了),因此如果您必须链接到在界面中使用时间的旧库,您必须使用32位时间来恢复到旧编译器的行为。 如果您的解决方案包含多个项目,您可能会发现并行生成功能(默认情况下启用)将突出显示缺少的生成依赖项。因此,项目突然以错误的顺序构建,但如果您从并行构建恢复到线性构建,则可以神奇地正确构建。 总体而言,我更喜欢VS2005/8到VS2003,如果这是一个选项,我建议升级到VS2008,因为编译器比VS2005更好,所以MS在改进本机C++编译器方面做了大量的努力。这其中的一部分在2005年已经很明显了,所以即使你坚持到2005年,你至少会得到一些好处。 |
|
|
2
5
|
|
3
4
|
|
|
4
2
你会发现很多字符串命令会给你警告,因为在Vis2005中,他们提高了安全性,试图停止缓冲区溢出运行。 不过,您的2003代码仍将编译。 |
|
|
5
1
|
|
|
6
0
不,我不会期望更多。 编辑:您应该/可以先使用vs2005的演示版本来尝试代码。 |
|
7
0
此外,康斯德禁用 checked iterators |
|
|
8
0
如果源代码符合C++标准,则不需要更改任何内容以移动到2005。您可能会收到一些贬值的警告,但不会出现编译错误。 人们从旧版本的VS转向新版本的主要问题是,新版本更符合标准。
什么时候
|
|
|
Albert Laure · 在SSRS中的不同数据集中添加值字段 12 年前 |
|
|
Edward Newgate · 正确的Json反序列化 13 年前 |
|
|
DiggDev · visualstudio2005 ctrl+f不工作 13 年前 |