所謂C++編譯器其實也不是什麼太難的東西,他是一個與標准化C++高度兼容的編譯環境。只有這樣的編譯器對C++開發人員來說才是最有意義的工具,尤其是對於程序設計語言的學習者。
經常有人向我(Bjarne Stroustrup)詢問,能否推薦一個C++編譯器。但是,我不能做這樣的推薦,因為這樣非常容易卷入一場商業戰爭。同樣,我也不知道每一種C++編譯器,因為它們有太多的相似的地方。我使用六種C++編譯器來完成基本需要,但是僅僅從表面上來看它們都是參差不齊的。
我建議人們使用和標准嚴格一致的編譯器。如果你這樣做,就能夠避免編譯器不和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; // this return statement isn't necessary
- }
如果編譯器不能處理這段簡單的程序,那麼它就不能作為學習標准C++語言的候選編譯器。這裡有一篇很長的文章論證編譯器的一致性,和boost.org的編譯器狀態文章。一致性是編譯器質量的一部分(產生代碼的質量。
錯誤消息,編譯速度,工具集成,支持程度,向後兼容,以及其它重要的方面),但卻是很重要的一部分。編譯器廠商對語言的擴充和非標准特性的使用限制了程序的簡捷性,並且可以防止你選擇一個新的編譯器廠商。
目前的編譯器都嵌入到了軟件開發工具和開發庫的框架裡邊。這些框架、環境、庫都非常有用,但是要記住一點是,對這些工具的使用將會使你局限在單一的賣主上,局限在重要的執行性能上。
當在網上尋找C++編譯器時,你可以發現隱藏在幾種產品名稱後的信息。實際上,使用google.com,我非常幸運的發現了C++編譯器的信息,這比起從廠商目錄中尋找要好的多。這裡,我選擇了一個C++編譯器的名稱列表,不考慮它們的市場情況。