You are here:

C++/Wow.. Thankyou so much,...



Thankyou so much, that clarified a lot. So, Microsoft Visual CPP is harder to use than standard CPP and more buggy, is that right?

Do you think I would be wiser to learn by using a standard compiler instead? If so, what brand do you suggest?

With a standard CPP compiler, is creating win32 applications really hard?

I'll have a look at those links you gave me, thanks a lot for that.. and get back to you if I have any questions?

I'm looking forward to learning more,

Thanks again.

First let me explain what ISO standard C++ is. It is a document published in 1998. It does not compile anything. It just states what an ISO standard C++ conforming compiler and library should do and contain. It also has bugs (and they have fixes the updated document was published in 2003).

Now compilers are software and all software has bugs. Therefore all compilers have bugs. Older compilers tend to have more deficiencies against the ISO standard, as they either pre-date it or did not have time to catch up. There are very few (if any) fully ISO standard C++ compliant compilers. A similar argument goes for the standard C++ library that accompanies most compilers. I once used a Sun compiler for the SPARC Solaris platform that was as deficient and buggy as VC6 but in different ways. Writing code that compiled on both could be a challenge.

The MS VC++ compilers are good for the Windows platform. But you should know which parts of any code you write are standard C++, which bits use MS specific extensions, maybe for supporting MS specific technology such as COM, which bits of standard C++ the compiler cannot handle because they are not implemented and which bits it should handle but are buggy. Example: the WinMain application entry point function is non-standard as is a main function that returns void. This latter point is especially for VC6 users, which insists in using such a signature for main.

VC 6 is an old product. There have been 3 versions since: .NET (AKA 7.0) .NET 2003 (AKA 7.1) and 2005 (AKA 8.0). Each of these adds MS extensions, primarily for interoperating with the .NET managed environment, fixes some bugs, keeps some bugs, adds new bugs and adds support for more standard C++ features.

So what do I recommend? For Windows specific development I would use MS VC++, preferably VC++ 2005, as it is the latest so should work well with the newer versions of Windows.

For learning standard C++ I would not use VC++ 6 (or those Sun compilers for that matter!). I think VC++ 2005 is OK especially if as many as possible MS extras are turned off. However if I want to ensure I am writing standard compliant C++ I will compile code under more than 1 compiler. e.g. for AllExpert answer examples I often use VC++ 2005 to get the code written then build using a recent version of GNU C++ (g++) under Linux. I also use the Comeau compiler as this is nearly 100% standard compliant. The free Comeau C++ library is not as compliant but you can buy a version from Dinkumware that claims to be 100% standard compliant. See for information. Note there are reasons not to use the Comeau compiler for some Windows development specifically MFC development as the MS MFC DLLs are not compatible with C++ compiled using the Comeau compiler.

The main problem with building Windows applications using other compilers is that the producer of the compiler must either license the Platform SDK from Microsoft or roll their own. I suspect the likes of Borland would do the former while open source developers would do the latter. One open source compiler is the MinGW port of g++ to Windows ( and the Dev-C++ IDE which uses it (

So how are you going to write your Windows applications? It is instructional to do it the raw way as you were but gets tedious after a while. This is why GUI code is often handled by some sort of framework. The MFC from Microsoft for example. Borland have C++ Builder which I believe integrates their GUI framework code into some sort of IDE based designer. If you think one day you may wish to have your application run on something other than Windows then you might like to consider using a cross platform framework such as wxWidgets (

For various free developer resources see C/C++ compilers are listed at Note that this is not in any way a Windows specific site. You might like to consider using another operating system such as Linux in addition to Windows.


All Answers

Answers by Expert:

Ask Experts


Ralph McArdell


I am a software developer with more than 15 years C++ experience and over 25 years experience developing a wide variety of applications for Windows NT/2000/XP, UNIX, Linux and other platforms. I can help with basic to advanced C++, C (although I do not write just-C much if at all these days so maybe ask in the C section about purely C matters), software development and many platform specific and system development problems.


My career started in the mid 1980s working as a batch process operator for the now defunct Inner London Education Authority, working on Prime mini computers. I then moved into the role of Programmer / Analyst, also on the Primes, then into technical support and finally into the micro computing section, using a variety of 16 and 8 bit machines. Following the demise of the ILEA I worked for a small company, now gone, called Hodos. I worked on a part task train simulator using C and the Intel DVI (Digital Video Interactive) - the hardware based predecessor to Indeo. Other projects included a CGI based train simulator (different goals to the first), and various other projects in C and Visual Basic (er, version 1 that is). When Hodos went into receivership I went freelance and finally managed to start working in C++. I initially had contracts working on train simulators (surprise) and multimedia - I worked on many of the Dorling Kindersley CD-ROM titles and wrote the screensaver games for the Wallace and Gromit Cracking Animator CD. My more recent contracts have been more traditionally IT based, working predominately in C++ on MS Windows NT, 2000. XP, Linux and UN*X. These projects have had wide ranging additional skill sets including system analysis and design, databases and SQL in various guises, C#, client server and remoting, cross porting applications between platforms and various client development processes. I have an interest in the development of the C++ core language and libraries and try to keep up with at least some of the papers on the ISO C++ Standard Committee site at


©2016 All rights reserved.