views:

4516

answers:

14

What are the advantages/disadvantages between MS VS C++ 6.0 and MSVS C++ 2008?

The main reason for asking such a question is that there are still many decent programmers that prefer using the older version instead of the newest version.

Is there any reason the might prefer the older over the new?

+4  A: 

Well, for one thing it may be because the executables built with MSVS 6 require only msvcrt.dll (C runtime) which is shipped with Windows now.

The MSVS 2008 executables need msvcrt9 shipped with them (or already installed).

Plus, you have a lot of OSS libraries already compiled for Windows 32 bit with the 6.0 C runtime, while for the 2008 C runtime you have to take the source and compile them yourself.

(most of those libraries are actually compiled with MinGW, which too uses the 6.0 C runtime - maybe that's another reason).

Vlagged
You can statically link the VCRT and not have any dependencies.
Jimmy J
A: 

Visual C++ 2008 is much more standards compliant (Visual Studio 6 doesn't support the C++ standard set in 1998).

Tom
A: 

VS2008 has better compiler (much more standards compliant, better optimizations, ...).

VS6 has much faster IDE. VS2008 IDE has many nice features, but it is a low slower than VS6.

NeARAZ
A: 

Quick list of improvements you'll see going from 6.0 to 2008:

  • Many bug fixes
  • Better conformance to the C++ standard
  • Better compiler optimization
  • Improved UI (better intellisense, etc)

One thing that people sometimes forget is that VS 6.0 is over 10 years old now! At this point, I don't see how anyone would want to stick with it.

17 of 26
It's not certain that VC++ 6 code will compile in VC++ 2005. It took me an afternoon of tweaking to get my code working. If a code base is huge then it might be very difficult to make the switch. Sometimes it's better the devil you know!
Jimmy J
+23  A: 

Advantages of Visual Studio 2008 over Visual C++ 6.0:

  • Much more standards compliant C++ compiler, with better template handling
  • Support for x64 / mobile / XBOX targets
  • Improved STL implementation
  • Support for C++0x TR1 (smart pointers, regular expressions, etc)
  • Secure C runtime library
  • Improved code navigation
  • Improved debugger; possibility to run remote debug sessions
  • Better compiler optimizations
  • Many bug fixes
  • Faster builds on multi-core/multi-CPU systems
  • Improved IDE user interface, with many nice features
  • Improved macro support in the IDE; DTE allows access to more IDE methods and variables
  • Updated MFC library (in VS2008 Service Pack 1)

Disadvantages of moving to Visual Studio 2008:

  • The IDE is a lot slower than VS6
  • Intellisense still has performance issues (replacing it with VisualAssistX can help)
  • Side-by-side assemblies make app deployment much more problematic
  • The local (offline) MSDN library is extremely slow
  • As mentioned here, there's no profiler in the Professional version


In the spirit of Joel's recent blog post, I've combined some of the other answers posted into a single answer (and made this a community-owned post, so I won't gain rep from it). I hope you don't mind. Many thanks to Laur, NeARAZ, 17 of 26, me.yahoo.com, and everyone else who answered. -- ChrisN

ChrisN
VS6 ClassWizard, when use with custom types and validation, is hugely faster for producing dialogs than later VS implementations. I still use it as a code generator and go back to VS2005 for release building.
Shane MacLaughlin
+1  A: 

Besides the deployment mentioned above, the main advantage of MSVC 6.0 is speed. Because it is a 10 year old IDE it feels quite fast on a modern computer. The newer versions of Visual Studio offer more advanced features, but they come at a cost (complexity and slower speed).

But the biggest draw-back of MSVC 6.0 is its non-compliant C++-Compiler and Library. If you intend to do serious C++-Programming this is a show-stopper. If you only build MFC-Applications it is probably not much of a problem.

Steffen
A: 

one tough thing we encountered was that "value" became a keyword.

kinjal
+1  A: 

Visual C++ 6.0 integrates with memory tracking tools, such as Purify, HeapAgent, BoundsChecker and MemCheck, thoroughly and well since those memory tracking tools were actively maintained and aggressively sold after Visual C++ 6.0 came out.

However, since C++ has been out of vogue for a while, the companies that sell memory tracking tools still sell them but never update or integrate them with new Visual C++ versions, including Visual Studio 2008. So, using memory tracking tools with Visual Studio 2008 is frustrating, errorprone and, in some cases, impossible.

+4  A: 

I would like to add that it's not the case that applications developed using Visual C++ 2008 must require more DLLs than those developed using Visual C++ 6.0. That's just the default project configuration.

If you go into your project properties, C/C++, Code Generation, then change your Runtime Library from Multi-threaded DLL and Multi-threaded Debug DLL (Release and Debug configurations) to Multi-threaded and Multi-threaded Debug, your application should then have fewer dependencies.

PeterM
+1, I think this might be useful information..
krebstar
+3  A: 

Off the top of my head, the advantages of the new Visual Studio are:

  • stricter adherence to standards
  • support for x64 / mobile / XBOX targets
  • better compiler optimizations
  • (way) better template handling
  • improved debugger; possibility to run remote debug sessions
  • improved IDE
  • improved macro support; DTE allows access to more IDE methods and variables

Disadvantages:

  • IDE seems slower
  • Intellisense still has performance issues (replacing it with VisualAssistX can help)
  • runtime not universally available
  • source control integration not up to par (although in all fairness VC6 lacks this feature completely)
Laur
+1  A: 

Since VC6 most of the focus of Visual Studio has been on C# and .NET, as well as other features, so some C++ old-timers see VC6 as the good old days. Things have improved in Visual Studio for C++ developers since those days, but not nearly as dramatically as for .NET users.

One way that VS2008 is significantly better than VC6 is that it can build C++ projects in parallel. This can result in significantly faster builds even on a single CPU system, but especially if you have multiple cores.

stevex
A: 

Did you know that MS VC6's implementation of the STL isn't thread-safe? In particular, the reference counting optimization in basic_string blows up even when compiled with the multi-threaded libraries. http://support.microsoft.com/kb/813810

introp
A: 

Visual C++ 6 can be very buggy at times compared to 2008. Some things in particular:

  • Poor template support/oddities (for instance sometemplate<othertemplate<t>> not working, but sometemplate< othertemplate<t> > working)
  • Not standards compliant
  • Resource editor is rubbish ("blue lines" seem to move around randomly, among other things)
  • Only supports editing certain kinds of 8-bit bitmaps (I have to use imagemagick to convert bitmaps saved in paint.net to be able to be seen in picture resources)
  • Terrible support for working with read-only files / quirky sourcesafe integration.

Sometimes developing in VS6 feels like trying to get websites looking good in internet explorer 5.5

FryGuy
A: 

If you install all service packs for VS6 you still have a solid IDE/compiler combo. As a software developer who have to release products in the wild (over Internet) I don't want to o ship the VC++ runtimes and .NET framework everytime (I can't bundle them directly in my installer/executable, its forbidden by Microsoft). You know, several megabytes of runtimes to run kilobytes of code is kinda stupid. VC++ 6.0 only need your executable and 2 .DLL at best.

Also, debug runtimes cannot be distributed with VC++ .NET, not really good when I have a client which need to do some debugging of my products :)

There is in my opinion the major reasons why I still use VC++ 6.0, but the IDE itself is ugly (ie: no tabbing support). I usually bypass the IDE limitations by using codeblocks instead (CodeBlocks support CL.EXE/LINK.EXE for all VC++ versions)

Cobolfoo