各位下午好,不论男女,不论天生或后天变性,不论无性、雄性激素、机器人、黑莓、书呆子、书呆子、智能裤子、兔子、兔子炖菜、fork 炸弹、猴子衍生物等等等等……
本文将讨论一个被称为
Dev-C++ 的 IDE(特指 Bloodshed Dev-C++),它出人意料地被广泛使用。更具体地说,我将讨论为何我们试图劝阻人们使用 Dev-C++,以及如果你是 Dev-C++ 用户,
你可以怎么做。本文不适用于 Orwell Dev-C++ 或任何其他 Dev-C++ 的分支(Orwell Dev-C++ 将在下文讨论,作为一个可行的替代方案)。
为何我们弃用 Dev-C++
一切都归结为一个原因
官方 Dev-C++ 自 2005 年以来就没有更新过,而且很可能永远不会更新,因为
首席开发者在 2006 年表示,由于个人原因,他将不再继续开发 Dev-C++。
因此,Dev-C++ 的陈旧性直接导致了 3 个主要问题。
- 附带的 MinGW 已过时。
- 许多已知错误可能永远无法修复。
- 该 IDE 缺乏更现代 IDE 的功能。
我将按顺序逐一介绍。
附带的 MinGW 已过时。
"MinGW" 是一个非正式的缩写,代表“
Minimalist
GNU for
Windows”(适用于 Windows 的极简 GNU)。它包含一套在许多 *nix 系统上常见的工具,包括 Dev-C++ 使用的 g++ 编译器和 gdb 调试器。
Dev-C++ 在计算机时代(Computer Centuries)没有更新的问题在于,捆绑的 MinGW 已经有好几年了,因此该编译器在新的系统上运行效果远不如最新的 MinGW g++ 副本。最新版本的 Dev-C++ 附带 MinGW 版本 3.4.2,然而,在本文最后更新(2013 年 11 月 8 日)时,MinGW 的 g++ 版本已是 4.8.1。
最后,不仅老旧编译器的代码生成可能更差,而且 Dev-C++ 附带的编译器是在 C++11 标准开始流行之前发布的。许多有价值的 C++11 特性(如 auto、decltype、新的 for 循环语法、lambda 表达式、正则表达式和多线程)完全不受支持。
许多已知错误可能永远无法修复。
最新版本的 Dev-C++(4.9.9.2,顺便说一句,这是一个测试版)根据 Sourceforge 的 bug 跟踪器(
链接),有超过 350 个未解决的错误,可能还有更多未计入的。
此外,由于 dev-packs 系统不再更新,该功能本身也已损坏,许多 pack 要么过时,要么已不存在。
由于首席开发者已退出,并且自那时起再无更新,这些错误很可能永远不会得到修复。
该 IDE 缺乏许多更现代 IDE 的功能。
Dev-C++ 的调试工具……也已经过时。调试器是任何程序员在任何级别都必需的工具,关于 Dev-C++ 调试界面混乱的抱怨并不少见。
此外,代码补全和文件解析器也落后于时代。随着 C++11 标准的发布,大多数功能齐全的 IDE 都已添加了对 C++11 功能的支持。而 Dev-C++ 很可能不会改变,这使得它比现在更加不适合 C++ 编程。
Dev-C++ 用户可以怎么做
切换到 Orwell Dev-C++
如果您真的很喜欢 Dev-C++ 或被要求使用它,这是一个推荐的选项。它是原始 Dev-C++ 的一个分支,支持 C++11,并且更新更及时。它提供 32 位平台和 64 位平台两种现代编译器的选择。
您可以在这里下载 Orwell Dev-C++ 和其中一种编译器:
http://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/
完全切换 IDE
市面上还有其他 IDE,其中一些质量非常出色。虽然切换 IDE 有一个学习曲线,但存在一些值得称赞的 Dev-C++ 的替代品。此处列出的所有 IDE 均可在 Windows 上运行,但并非所有 IDE 都附带编译器。
好的免费 IDE 列表包括但不限于
选择极简主义
这并不是一个我非常推荐大多数人的选项,但是使用一个极简文本编辑器配合 makefile 和终端是我有时喜欢的开发选项,而且我相信还有其他人也会喜欢。
可能的轻量级编辑器包括但不限于
更新 Dev-C++
考虑到您在使用 IDE 本身时可能遇到的问题,我不推荐此选项,但如果您非常不愿意切换到 Orwell Dev-C++,那么至少可以做的是更新附带的 MinGW,使其更适合使用。
很遗憾,我无法提供具体的操作方法,因为我自己甚至无法安装 Dev-C++。但是,您可能需要搜索一些与 MinGW 相关的文件,删除它们,然后将新的 MinGW 安装到相应位置。
不过,执行此操作时要小心,因为同时存在两个版本的 MinGW 可能会导致链接器错误(“未定义引用 __cpu_features_init”)。
总而言之……
虽然原始的 Dev-C++ 可能易于使用,但这并不意味着您应该继续使用它。引用 Moschops 在
这里 的话
将我的脚钉在地板上比用我自己的肌肉来保持平衡更容易,但你没看到我这样做 :)
-Albatross
编辑 1:添加了一些有用的超链接。
编辑 2:修复了项目符号点。
编辑 3:在编码更新删除了加号后,将加号放回了文章中。还更新了 wxDev-C++ 的下载链接。
编辑 4:添加了 QT Creator 和 Notepad++。感谢
Danellos 和
immutable 的建议!
编辑 5:我不得不最后加上
Moschops 的一句名言。:)
编辑 6:修复了一个小的格式问题,添加了一些链接,并进行了一些其他小改动。
编辑 7:更新了 Eclipse CDT 链接以反映新版本,并对一些措辞进行了修改。
编辑 8:承认 Orwell Dev-C++ 是一个非常有价值的替代方案。
编辑 9:更新了 Sourceforge bug 跟踪器链接,并进行了一些小的措辞更改。
编辑 10:更新了一些链接,强调了本文是指 Bloodshed Dev-C++,并删除了切换到 wxDev-C++ 的建议,因为其开发已经停滞了一段时间。
编辑 11:删除了关于 Code::Blocks 已过时的说明,因为在 2013-12-27 有一个新版本发布。