打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
C/C++编译器的选用
阿青哥Joe
>《编程工具箱》
2016.05.26
关注
特别说明:
鉴于时不时的有人问关于用什么编译器的问题,我翻译了Bjarne
Stroustrup主页上compilers栏目的一篇文章,希望对大家有点指导意义。
这个翻译稿的粘贴过程中失去了所有超级连接(pfan提供的编辑功能不够好),我只好另外在旁边附加上,抱歉。
另外,为了避免重复发贴,我把本站sarrow原来的相关文章也复制过来,供彷徨中的朋友参考。
一个C++编译器的不完全列表
2008年11月18日更新
我(Bjarne
Stroustrup
http://www.research.att.com/~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.cuj.com/roundup/a.htm
和boost.org'的编译器状态页
http://www.boost.org/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.bloodshed.net/devcpp.html
.
一个基于GCC(Mingw)的IDE.
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"
http://www.mingw.org/
.
另外一个GCC
for
Windows版本,包含了一个免费的(非GPL)w32api。
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++
http://www-949.ibm.com/software/rational/cafe/community/ccpp
用于IBM
power,
System
Z,
Bluegene,
and
Cell.
Intel
C++
http://www.intel.com/software/products/compilers/clin/noncom.htm
for
linux