经C++创始人Bjarne Stroustrup博士同意,我翻译了这篇文章并贴在这里,供选择编译器的朋友参考。欢迎转载,转载请注明出处。
英文版原文在http://www.research.att.com/~bs/compilers.html
我(Bjarne Stroustrup) 常常被提问建议的C++编译器,但是我不做建议,因为那样看起来很像站在商战的某一边。况且,我并不了解每一个C++编译器,仅仅知道C++编译器多如牛毛而已。一般而言,我使用半打(6个)编译器,但这充其量也仅仅不过是表面文章而已。
我建议人们选用一个编译器时认真考虑它跟标准的一致程度。如果可能,避免使用任何不太符合ISO标准或者不支持标准库某项实现的编译器。所有主要C++编译器供应商的最新版本都做得不错。
如果你是新手,不知道怎么识别一个编译器是否合适,试试编译下面这个程序:
#include<iostream> int main() |
如果一个编译器不能处理这么简单的程序,那它不适合用来学习标准C++.(如果你剪切和粘贴以上代码,小心#include 指令后的“小于号”)。
尽管现在这些细节问题早已经陈旧,这里有一篇很长的文章论述一致性问题和boost.org'的编译器状态页。一致性仅仅是编译器质量的一项指标(产生代码质量、出错信息、编译速度、跟开发工具集成、支持程度、向后兼容这些都是其他衡量指标),不过一致性很重要的一项。使用某供应商的语言扩展特性和非标准特性限制了你的代码可移植性而且妨碍你选择一个新供应商的产品。
大多数编译器内嵌在软件开发工具框架和库里面。这些框架、环境和库对你可能非常有用,但是记住使用它们会把你锁定到单一供应商,而且一些应用存在严重的运行性能问题。
当在网上寻找C++的时候,你会发现很多信息“隐藏”在各自产品下面。事实上,我用google.com寻找C++编译器比直接联系C++编译器供应商更方便。在此,忽略市场商标,我列出很多C++编译器的提供者。
一些编译器可以免费下载(尝试商业应用前要看看他们的条件/许可证):
·Apple C++. OS X开发工具CD上也有。
http://developer.apple.com/tools/macosxtools.html
·Bloodshed Dev-C++. 一个基于GCC(Mingw)的IDE.
http://www.bloodshed.net/devcpp.html
·Borland C++
http://www.borland.com/downloads/download_cbuilder.html
·Cygwin (GNU C++)
http://www.cygwin.com/
·Digital Mars C++
http://www.digitalmars.com/
·MINGW - "Minimalist GNU for Windows". 另外一个GCC for Windows版本,包含了一个免费的(非GPL)w32api.
http://www.mingw.org/
·DJ Delorie's C++ development system for DOS/Windows (GNU C++)
http://www.delorie.com/djgpp
·GNU CC source
http://www.gnu.org/software/gcc/gcc.html
·IBM C++ 用于IBM power, System Z, Bluegene, and Cell.
http://www-949.ibm.com/software/rational/cafe/community/ccpp
·Intel C++ for linux
http://www.intel.com/software/products/compilers/clin/noncom.htm
·The LLVM Compiler Infrastructure (基于GCC)。
http://llvm.cs.uiuc.edu/
·Microsoft Visual C++ 2008 Express edition.
http://www.microsoft.com/express/vc
·Sun Studio.
http://developers.sun.com/sunstudio
一些编译器需要支付费用(有些允许试用期内免费下载):
·Borland C++
http://www.borland.com/bcppbuilder/
·CodeWarrior C++ (正式名字是Metrowerks),支持很多平台
http://www.metrowerks.com/products/macos/
·Comeau C++支持很多平台
http://www.comeaucomputing.com/
·Edison Design Group C++ Front End - 很多C++编译器供应商使用它
http://www.edg.com/cpp.html
·Green Hills C++用于很多嵌入式系统平台
http://www.ghs.com/products/optimizingC++EC++Compilers.html
·HP C++ for Unix和HP C++ for OpenVMS.
http://www.hp.com/go/cpp/
http://h71000.www7.hp.com/commercial/cplus/cplus_index.html
·Intel C++支持Windows, Linux, 和一些嵌入式系统
http://www.intel.com/software/products/compilers/
·Mentor Graphics/Microtec Research C++用于很多嵌入式系统平台
http://www.mentorgraphics.com/embedded/compilers/index.html
·Microsoft C++
http://msdn.microsoft.com/visualc
·Paradigm C++, 用于x86的嵌入式系统
http://www.devtools.com/
·The Portland Group C++(用于奔腾架构处理器的并行)
http://www.pgroup.com/prodworkpgcc.htm
·SGI C++, 优化编译器
http://www.sgi.com/products/software/irix/tools/c++.html
·Sun C++
http://www.sun.com/forte/cplusplus/index.html
·WindRiver's Diab C++, 很多嵌入式系统使用。
http://www.windriver.com/products/
对于我而言,让该列表完整和保持最新状态不太可能。C++世界太大,新东西出现太快。对于那些我未能列出来的供应商表示歉意,我知道会有一些,如果你有一个连接并认为应该在此列出来的话,请给我写信:bs at research.att.com.再次重申:我仅仅列出编译器,我并不是赞成它们。而且对于每个人而言,没有哪种编译器最好,不同的人有不同的需要。
C++编译器的其他列表:
The open directory project.
http://dmoz.org/Computers/Programming/Languages/C%2b%2b/Compilers/
Compilers.net: 免费的C和C++编译器列表。
http://www.compilers.net/Dir/Free/Compilers/CCpp.htm
一个过滤器可以用来改善很多编译器的错误信息,见STLfilt.