經C++創始人Bjarne Stroustrup博士同意,我翻譯了這篇文章並貼在這裡,供選擇編譯器的朋友參考。歡迎轉載,轉載請注明出處。
英文版原文在http://www.research.att.com/~bs/compilers.html
我(Bjarne Stroustrup) 常常被提問建議的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 指令後的“小於號”)。
盡管現在這些細節問題早已經陳舊,這裡有一篇很長的文章論述一致性問題和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.