You are here:

C++/which compiler to use


Due to disability I cannot work. Before medical retirement I worked as an IT Helpdesk Analyst. Now I can only work when my body will allow me to. As I have no other options in earning an income I am learning C++ in the hope that I may eventually in time - I have lots of that - break into the shareware market. If I intend to code just for the windows environment which compiler would you recommend I start with, so the learning curve can include the compiler I will end up working with when I have sufficient knowledge and coding practice with c++ ?

Hmmm, well I should make it clear these are only my suggestions - others may well see things differently. Some people like one compiler other like another. To some extent it depends on what you are doing.

The obvious choice for Microsoft Windows is Microsoft's own Visual C++ (VC++) product - they have just released the new 2005 edition and I believe there is a cheap / free express edition available that lacks a some of the features in other editions of the product but would be a good choice to start with. The full professional product probably costs quite a bit - I do not bother to track these costs as I have licenses for VC++ via my MSDN (Microsoft Developer Network) subscription. MSDN can be found at Visual C++ information can be found at There is a useful feature table for the various editions at

Now a word of warning. Many C++ compilers have extension to the ANSI/ISO standard C++ and VC++ certainly is one such compiler. Only using one compiler can lull you into writing non-standard code so if you ever had to - for example - port your product to another platform - Mac OS X or Linux maybe - using another compiler - GNU C++ for example - then you will have a much greater struggle than if you stick to standard code as much as possible - only using the extensions where absolutely necessary for the application on the platform in question.

Compilers also understand C++ with varying degrees of compliance to the standard. Sometimes this is due to them not implementing a feature or getting the implementation wrong (maybe only supporting pre-standard behaviour) or even because of bugs in the compiler.

So I find it is always helpful to have at least two (modern) compilers available just to see how portable my code is and how standard. In order to check my understanding of a C++ feature I will use my current VC++ compiler which is quite good then use a less professionally useful compiler for full MS Windows development but which has a very good strictly standards compliant compilation mode.

Some other compiler choices for MS Windows are:

The MinGW port of the GNU C++ compiler ( with the DevC++ integrated development environment (IDE) ( These are free and good starting points for a beginner. Many people learning C++ at college seem to use it so I have a copy installed if someone questions me on AllExperts with specific reference to MinGW or DevC++.

Comeau C++ ( This is the very standard compliant compiler I mentioned. It is quite cheap but you _MUST_ have an existing supported C compiler installed for it to function (most C++ compilers are C compilers as well). If you just wish to check some (short snippet of) code is good C++ then they have a test it online page on their website.

Borland C++ Builder ( is an alternative compiler to VC++. They also have some older classic products available such as Turbo C++ suite which are considerably cheaper. Some people prefer the Borland product line to the Microsoft offerings.

There are many other compilers available for Windows - see this list at for example. I notice that the last update date for Microsoft VC++ is now out of date!

Hope this helps and good luck with C++ and the shareware venture.  


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.