我终于实现了从Visual Studio 6(1998年份)到VS 2010的飞跃。这很痛苦,但经过八个小时的工作,我的200KLOC Win32程序实际上已经运行了!
我对VS转换项目的方式感到失望。
[1] VS忽略预编译的目标,如果它不是“stdafx.cpp”
[2]在具有多个配置的项目中,VS会忘记某些配置中不包含哪些模块,并且包含所有地方的所有模块。这意味着必须重新识别需要排除的每个模块。
[3]如果某些模块不使用预编译的头文件,VS就会失去这种区别,并为每个人分配预编译的头文件。
[4]某些模块的属性是神秘不可改变的。必须删除该模块,然后重新添加。
[5]许多奇怪的错误信息没有意义并且无法解释地消失。
有没有人遇到任何其他惊喜?
多核编译会有很大的不同吗?在我的带有4核的Intel i5 3.2GHz 4GB 64位PC上,200K线的编译为58秒。没有多核,47秒。用。
不过,我不应该抱怨。编译过去需要40分钟。在33 MHz 486上。
答案 0 :(得分:3)
不再支持Visual C ++ 6.0,所以如果我这样,你会感到宽慰,这本来就有用。
我从VC6到VC7.1 / VC8的主要问题 - VC6中的STL支持已经过时 vis a vis 当前标准,导致有时会出现无法编译的代码,例如:{ STL容器内不再允许{1}}; auto_ptr
代码通常不同。
当您在VS2010中构建此警告时,不要忽略警告(您的第5点可能是?),并使用<locale>
运行VS2010版本。现在解决警告可以节省数小时的调试时间。
在VS2005发布后的多核编译将并行编译非依赖项目,所以是的,这可以使你的东西构建更快。
好消息是,当尘埃落定时,你会感激你的感动。在VS2010 / VC10中,这是一种更高效的IDE和语言。
答案 1 :(得分:0)
当您有多个非依赖项目时,多核编译会使事情变得更快。缺点是不同汇编的输出相互混合(至少在2005年,不确定2010年),这使得追踪错误有点痛苦。一个项目无法编译和中止,其他项目仍然继续,并且来自中止的最终消息不是彼此相邻 - 它们在日志中间传播。您必须在输出窗口中使用文本搜索功能。
另一件令我恼火的事情(再次,在2005年),是因为他们的宏代码中有一个错误,你不能在录制的宏中使用逗号。据我所知,它仍然没有修复。