介绍

Clang编译器是一个面向C编程语言家族的开源编译器,旨在成为这些语言中类实现最好的。Clang建立在LLVM优化器和代码生成器,允许它提供高质量的优化和多目标的代码生成支持。更多信息,请参见Clang网站和LLVM网站。

这份文档描述了有关使用Clang作为编译器的终端用户的重要注记,记录了支持的特性,命令行选项等等。如果你对使用Clang来构建一个处理代码的工具,请看”Clang” CFE Internal Manual。如果你对Clang Static Analyzer感兴趣,请参考它的网站。

Clang被设计来支持C编程语言家族的,其中包含了C,Object-C,C++和Object-C++等。对于特定语言的信息,请参见对应语言的节:

  • C 语言: K&R C, ANSI C89, ISO C90, ISO C94 (C89+AMD1),ISO
    C99(+TC1,TC2,TC3).
  • Objective-C 语言: ObjC 1, ObjC 2, ObjC 2.1, 加上取决于基本语言的变体
  • C++ 语言
  • Objective C++ 语言

对于这些基础语言和他们的方言,Clang支持很广泛的语言扩展,他们记录在对应语言的节中。这些扩展被提供来兼容GCC,Microsoft和或者其他流行的编译器来提高功能通过Clang-specific特性。Clang驱动器和语言特性设计来合理的兼容GNU GCC编译器,从GCC迁移到Clang消除合并。在大多数情况下,代码“just works”。

对于特定语言特性,Clang具有针对CPU架构或者编译的目的操作系统的广泛特性。请参见Target-Specific Features and Limitations 一节获取详细信息。

剩下的介绍引入了在整个手册中使用的基本的编译器名词和一个使用Clang作为命令行编译器的使用介绍。

名词

前端、解析器、后端、预处理器、未定义行为、诊断、优化器

基本使用

给新手的介绍如何使用一个C编译器

编译+连接然后连接调试信息使能优化选择一个语言来使用,默认是C99。基于扩展的Autosenses。使用makefile。