Clang对比Gcc的优劣势分析

Clang:LLVM的C语言家族前端

Clang项目是为LLVM 项目的C语言系列(C/C++,Objective C/C++,OpenCL,CUDA和RenderScript)中的语言提供语言前端和工具基础结构。

Clang项目提供了与GCC兼容的编译器驱动程序(clang)和与MSVC兼容的编译器驱动程序(clang-cl.exe)。

Clang的源代码授权采用的是类BSD的伊利诺伊大学厄巴纳-香槟分校开源码许可。

Clang的编译器的优势

相比于gcc,clang具有如下优点:

  • 编译速度更快:在某些平台上,clang的编译速度要明显快于gcc。
  • 占用内存更小:clang生成的AST所占用的内存通常是gcc的五分之一左右。
  • 模块化的设计:clang采用基于库的模块化设计,更易于IDE的集成及其他用途的重用。
  • 诊断信息可读性强:在编译过程中,clang会创建并保留大量详细的元数据(metadata),这将更有利于调试和错误报告。
  • 设计更清晰简单,容易理解,易于扩展加强。与代码基础较为古老的gcc相比,学习曲线会显得更为平缓。

Clang的编译器的劣势

当前 Clang 还处在不断完善过程中,相比于gcc, clang在以下方面还需要加强:

  • 需要支持更多语言:gcc除了支持 C/C++/Objective-C,还支持Fortran/Pascal/Java/Ada/Go等其他语言。clang目前基本上只支持C/C++/Objective-C/Objective-C++这四种语言。
  • 需要加强对C++的支持:clang对C++的支持依然落后于gcc,clang还需要加强对C++ 提供全方位支持。
  • 需要支持更多平台:由于gcc流行的时间比较长,已经被广泛使用,对各种平台的支持也很完备。clang目前支持的平台有Linux/Windows/Mac OS。