什么是Clang?

Clang: 一种C语言家族编译器

Clang项目的目标是创建一个新的C,C++,Objective C和Objective C++编译器(译注:也就是LLVM的前端Front-end),Clang基于LLVM架构,你现在可以获取它的源代码进行构建。

特性和目标

最终用户:

  • 更快速的编译和低内存占用
  • 更易用的编译错误和警告信息表达(参见例子)
  • GCC兼容

二次应用:

  • 基于库的模块化架构设计
  • 支持多样化的客户程序 (重构, 静态分析, 代码生成等)
  • 允许与IDE紧密集成
  • 采用了比较开放的类BSD协议(LLVM ‘BSD’ License)

内部设计和实现(Clang开发者本身):

  • 一个真正的产品级质量编译器
  • 简单易被理解代码库
  • 统一的解释器(C, Objective C, C++, 和Objective C++)
  • 保持与C/C++/ObjC等类C语言的一致性

当然上面这些是一个粗略的目标和特性。想全面了解Clang,请参见这里,它将描述得更加详细。

为什么需要Clang?

软件开发需要一种新的编译器:可以更好的诊断和提示编译错误和警告信息,更好与集成开发环境(IDE)整合,以及更加灵活容易开发和维护且商业友好的编译器。这些就是开启新的前端(Front-end)编译器的动机。

下面是一些很好的(但确实很过时了)介绍Clang视频讲座:

如需更详细的Clang和其他编译器的比拼信息,请参阅Clang的比拼

当前状态

Clang仍处于开发状态。Clang被定义为是一个C,Objective-C,C++和Objective C++产品级质量编译器,支持X86-32,X86-64和ARM(其他目标可能有警告,但通常很容易解决)。如果您正在寻找为源代码分析或“源代码到源代码”的转换工具,Clang可能是您的最佳解决方案。Clang也支持C++11,有关更多信息,请参阅C++状态

如何获取Clang和参与其中

这里是获取Clang的代码,构建和运行它的第一手资料:希望它会与你产生共鸣:)

一旦你这样做了,请考虑参与到Clang开发社区中来。Clang开发社区中包括了许多各种不同背景的志愿者以及他们所贡献的资源。在之后的开发中,如果你有兴趣了解Clang项目是如何工作的,订阅邮件列表是一个很好的方式。