Good afternoon males, females, natural hermaphrodites, unnatural hermaphrodites, unsexed, androgens, androids, blackberries, geeks, nerds, intelligent trousers, wabbits, wabbit stews, fork bombs, monkey derivatives, etc, etc, etc...
This article will discuss the IDE known as Dev-C++
(specifically, Bloodshed Dev-C++), which is in surprisingly common usage. More specifically, I will be discussing why we try to steer people away from using Dev-C++, and what you can do
if you are a Dev-C++ user. This article does not apply to Orwell Dev-C++ or any other forks of Dev-C++ (Orwell Dev-C++ will be discussed below as a viable alternative).
Why we've deprecated Dev-C++
It all boils down to one reason:
The official Dev-C++ hasn't been updated since 2005
, and likely will never be updated since the lead developer has stated in 2006 that due to personal issues he will not be continuing development on Dev-C++
From there, there are 3 main problems that are directly caused by Dev-C++'s age.
- The included MinGW is obsolete.
- The many known bugs may never be fixed.
- The IDE lacks the features of more modern IDEs.
I'll go over each of these in order.
The included MinGW is obsolete.
MinGW is an irregular acronym which stands for "Min
NU for W
indows". It includes a various set of tools commonly found on many *nixes including the g++ compiler and gdb debugger, which Dev-C++ makes use of.
A problem with Dev-C++ not being updated in computer centuries is that the bundled MinGW is several years old, and as a result the compiler doesn't work nearly as well on new systems as a hot-out-of-the-oven copy of MinGW's g++ would. The latest version of Dev-C++ comes with MinGW version 3.4.2, however at the time of this article's last update (November 8, 2013) MinGW's g++ is at version 4.8.1.
Finally, not only is the code generation likely worse with an older compiler, but the compiler bundled with Dev-C++ was released well before the C++11 standard started to gain steam. Many valuable C++11 features (like auto, decltype, the new for loop syntax, lambdas, regexes, and multithreading) are completely unsupported.
The many known bugs may never be fixed.
The latest version of Dev-C++ (184.108.40.206, which by the way is a beta) currently has over 350 open bugs according to Sourceforge's bug tracker (link
), and possibly more that are not accounted for.
Furthermore, due to the fact that the dev-packs system is no longer being updated, that feature itself has also become broken with many packs being either outdated or no longer existent.
Since the lead developer quit and there have been no updates since then, it is highly unlikely that these bugs will ever be fixed.
The IDE lacks many of the features of more modern IDEs.
Dev-C++'s debugging utilities are... also old. A debugger is an essential utility for any programmer to have at any level, and complaints about the Dev-C++ debugging interface being confusing are not uncommon.
In addition, the code completion and file parsers are lagging behind the times as well. As the C++11 standard has now been released, most of the fully-featured IDEs have added support for C++11 features. Dev-C++, however, will likely not change, making it even less suitable for programming in C++ than it is now.
What you can do if you're using Dev-C++
Switch to Orwell Dev-C++
This is a recommended option if you really like Dev-C++ or if you're required to use it. It's a fork of the original Dev-C++ that is more up-to-date with C++11 support. It offers a choice between two modern compilers, one for 32-bit platforms and one for 64-bit platforms.
You can download Orwell Dev-C++ with either compiler here: http://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/
Completely switch IDEs
There are other IDEs in existence, some of which are of excellent quality. Although changing IDEs has a learning curve, there are some formidable alternatives to Dev-C++ in existence. All of the IDEs listed here will run on Windows, though not all of them come bundled with compilers.
The list of good free IDEs includes but is not limited to:
This isn't an option I recommend too highly for most, however using a minimalist text editor with makefiles and a terminal is something I sometimes enjoy as a development option, and I'm sure there are others who would as well.
Possible lightweight editors include but are not limited to:
I recommend this option the least considering the problems you might run into with the IDE itself, however if you're highly reluctant to change to even Orwell Dev-C++ then the least one can do to make the IDE more suitable for use is update the included MinGW.
I cannot give the specifics of how to do this, unfortunately, as I am incapable of even installing Dev-C++. However, you would probably end up doing a few searches for MinGW-related files, removing them, and the installing the new MinGW in their places. Be careful doing this, though, as having two versions of MinGW might trigger linker errors ("undefined reference to __cpu_features_init").
While the original Dev-C++ might be easy to use, that does not mean that you should stick with it. To quote Moschops from here
Nailing my feet to the floor is easier than using my own muscles to balance, but you don't see me doing that :)
EDIT1: Added some useful hyperlinks.
EDIT2: Fixed the bullet points.
EDIT3: Put the pluses back in the article after an encoding update erased them. Also updated the wxDev-C++ download link.
EDIT4: Added QT Creator and Notepad++. Thank you Danellos
for the suggestions!
EDIT5: I just *had* to include a quite by Moschops
at the end. :)
EDIT6: Fixed a small formatting issue, added a few links, and made some other small changes.
EDIT7: Updated the Eclipse CDT link to reflect a new version and made a few phrasing changes.
EDIT8: Acknowledged that Orwell Dev-C++ is a very worthy alternative.
EDIT9: Updated the Sourceforge bug tracker link, and made some small wording changes.
EDIT10: Updated a few links, emphasized the point about this referring to Bloodshed Dev-C++, and removed the recommendation to switch to wxDev-C++ as its development has been stagnant for some time now.