I wrote some C++ programs and classes a few years ago using Visual C++ 6.0 as my editor/compiler. Recently I replaced the 6.0 with Visual C++ 2008 Express. Now, none of my older code will compile.
I read that there were some changes to the C++ standard library some time ago and I suspect the VC++ 2008's compiler incorporates these changes.
If I am correct, all I need is some documentation as to what was changed in the library so I can edit the source code and make it work again.
Can someone point me in the right direction so I can update my code to today's standards?
Thanks.
Uncle Ed

Recommended Answers

All 6 Replies

Do your applications use either the MFC (MS Foundation Classes) or the ATL (active template library)? Those libraries are only found in the Standard Edition and higher. Otherwise VC++ Express only supports pure Win32 and Winforms for C++/CLI.

I'm not absolutely sure what in terms of the actual C++ standard was implemented from version to version. I know there's a listing of things that are still non-standard for each generation (they don't have one for 6.0 any more but here's the one for 2008 (you can get them for as far back as 2003 edition on the right side of that window).

Hi, Jonsca.
My apps are strctly 'console'-type. No MFC or ATL.
I've just now opened the link you provided; it may hold the key.
Thanks for the quick reply.
Uncle Ed

>Recently I replaced the 6.0 with Visual C++ 2008 Express.
>Now, none of my older code will compile.

I'm not surprised. One of the biggest things Visual C++ 6 supports that newer versions do not is the prestandard headers:

// Compiles in VC++6, but not VC++2008
#include <iostream.h>

int main()
{
  cout<<"Hello, world!\n";
  return 0;
}

There are many other things like that in Visual C++ 6, but I suspect that's your biggest problem. The easiest way to get around it is using the standard header names and a using directive:

// Compiles in VC++2008 (also VC++ 6)
#include <iostream>

using namespace std;

int main()
{
  cout<<"Hello, world!\n";
  return 0;
}

Another huge failure point of Visual C++ 6 is the STL. However, it's hard to tell you what other changes to make without seeing your code or the errors you're getting.

Do your applications use either the MFC (MS Foundation Classes) or the ATL (active template library)? Those libraries are only found in the Standard Edition and higher. Otherwise VC++ Express only supports pure Win32 and Winforms for C++/CLI.

I'm not absolutely sure what in terms of the actual C++ standard was implemented from version to version. I know there's a listing of things that are still non-standard for each generation (they don't have one for 6.0 any more but here's the one for 2008 (you can get them for as far back as 2003 edition on the right side of that window).

Hello again, Jonsca.
That link did the trick. Had to rename some INCLUDEd header files (e.g. math.h is now cmath).
Uncle Ed

Thanks, Narue.
Renaming the INCLUDEd headers let me compile and link the the app.
Jonsca sent me a link to MSDN that helped me find the newer names (e.g. cmath instead of math.h).
Uncle Ed

One of the biggest things Visual C++ 6 supports that newer versions do not is the prestandard headers:

The math.h/cmath is along the lines of which Narue expressed. I hadn't thought of that exact thing, but now I know :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.