特别说明:
鉴于时不时的有人问关于用什么编译器的问题,我翻译了Bjarne Stroustrup主页上compilers栏目的一篇文章,希望对大家有点指导意义。
这个翻译稿的粘贴过程中失去了所有超级连接(pfan提供的编辑功能不够好),我只好另外在旁边附加上,抱歉。
另外,为了避免重复发贴,我把本站sarrow原来的相关文章也复制过来,供彷徨中的朋友参考。
一个C++编译器的不完全列表 2008年11月18日更新
我(Bjarne Stroustrup http://www.research./~bs/homepage.html) 常常被提问建议的C++编译器,但是我不做建议,因为那样看起来很像站在商战的某一边。况且,我并不了解每一个C++编译器,仅仅知道C++编译器多如牛毛而已。一般而言,我使用半打(6个)编译器,但这充其量也仅仅不过是表面文章而已。
我建议人们选用一个编译器时认真考虑它跟标准的一致程度。如果可能,避免使用任何不太符合ISO标准或者不支持标准库某项实现的编译器。所有主要C++编译器供应商的最新版本都做得不错。 如果你是新手,不知道怎么识别一个编译器是否合适,试试编译下面这个程序:
#include<iostream> #include<string> using namespace std;
int main() { string s; cout << "Please enter your first name followed by a newline\n"; cin >> s; cout << "Hello, " << s << '\n'; return 0; // 该返回语句可以不要 }
如果一个编译器不能处理这么简单的程序,那它不适合用来学习标准C++。(如果你剪切和粘贴以上代码,小心#include 指令后的”小于号”).
尽管现在这些细节问题早已经陈旧,这里有一篇很长的文章论述一致性问题 http://www./roundup/a.htm和'的编译器状态页 http://www./status/compiler_status.html。一致性仅仅是编译器质量的一项指标(产生代码质量、出错信息、编译速度、跟开发工具集成、支持程度、向后兼容这些都是其他衡量指标),不过一致性很重要的一项。使用某供应商的语言扩展特性和非标准特性限制了你的代码可移植性而且妨碍你选择一个新供应商的产品。
大多数编译器内嵌在软件开发工具框架和库里面。这些框架、环境和库对你可能非常有用,但是记住使用它们会把你锁定到单一供应商,而且一些应用存在严重的运行性能问题。 当在网上寻找C++的时候,你会发现很多信息”隐藏”在各自产品下面。事实上,我用google.com寻找C++编译器比直接联系C++编译器供应商更方便。在此,忽略市场商标,我列出很多C++编译器的提供者。
一些编译器可以免费下载(尝试商业应用前要看看他们的条件/许可证):
Apple C++ http://developer.apple.com/tools/macosxtools.html. OS X开发工具CD上也有。
Bloodshed Dev-C++ http://www./devcpp.html. 一个基于GCC(Mingw)的IDE.
Borland C++ http://www./downloads/download_cbuilder.html
Cygwin (GNU C++) http://www./
Digital Mars C++ http://www./
MINGW - "Minimalist GNU for Windows" http://www./. 另外一个GCC for Windows版本,包含了一个免费的(非GPL)w32api。
DJ Delorie's C++ development system for DOS/Windows (GNU C++) http://www./djgpp
GNU CC source http://www./software/gcc/gcc.html
IBM C++ http://www-949.ibm.com/software/rational/cafe/community/ccpp 用于IBM power, System Z, Bluegene, and Cell.
Intel C++ |