在提到这个问题之前我们应该了解编译器是什么?
简单来说:编译器就是将一种语言(通常为高级语言)翻译为另一种语言(通常为低级语言
的程序。一个现代编译器的主要流程有:源代码——>预处理器——>编译器——>目标代码——>链接器——>可执行程序。

几种常见的编译器:

1.Microsoft Visual C++

Microsoft Visual C++是微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言,基于Windows操作系统。VC++集成了便利的除错工具,特别是集成了Windows视窗操作系统英语程序接口(Windows API)、三维动画DirectX API,Microsoft.NET框架。目前最新版本是Microsoft Visual C++2017。它以拥有语法高亮,IntelliSense(自动完成功能)以及高级除错功能而著称。

2.GNU Compiler Collection(GCC)

GNU编译器套件包括C、C++、Objective-C、Java|、Ada和Go语言的前端,也包括这些语言的库,GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。GCC原本是GNU操作系统的官方编译器,现在被大多数类Unix操作系统(如Linux、BSD、Mac OS等)采纳为标准的编译器。GCC同样适用于微软的Windows操作系统。在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称(这里就不多说了,下次整理出来了单发一篇)。

3.Clang

Clang是一个C语言、C++、Objective-C语言的轻量级编译器。源代码发布于BSD协议下。Clang将支持其普通lambda表达式、返回类型的简单处理以及更好的处理constexpr关键字。
Clang项目包括Clang前端和Clang静态分析器等。Clang的在出生之前就已经明确了他的使命——干掉该死的GCC。有了LLVM+Clang,从此,苹果的开发面貌焕然一新。从此摆脱了GCC的限制。客观的说GCC是有很多的优点,例如支持多平台,很流行,基于C无需C++编译器即可编译。这些优点到苹果那就可能是缺点了,苹果需要的是——快。这正是Clang的优点,除了快,它还有与GCC兼容,内存占用小,诊断信息可读性强,易扩展,易于IDE集成等等优点。有个测试数据:Clang编译Objective-C代码时速度为GCC的3倍。