Clang 与 GCC 编译器的简单比较
2014-03-29 17:47
218 查看
主要整理自知乎上的一个讨论:
目前业界的三大主流C++编译器:VisualC++、g++、Clang++.其中VisualC++最主要的优势是图形化界面,调试方便,但是可用的平台非常有限。这里主要比对g++与Clang++.
Clang 比 GCC
编译器的优势:
· 编译速度更快
· 编译产出更小
· 出错提示更友好,比如clang在编译过程可以直接指出相对简单的出错位置以及它“认为”正确的方式。
· 内置有静态分析工具,可以对代码进行静态分析(clang—analyze)。这也是gcc做不到的。
· 因为clang只需要完成词法和语法分析,代码优化和机器代码的生成工作由llvm完成。所以和全部由自己包下的gcc比起来,clang可以更专注地做好一件事。这种结构也使clang可以被单独拿出来用在其他的程序里,成为其它
app(主要是 IDE)的内嵌 C/C++ parser。对于
IDE 而言,代码补全、重构是重要的功能,然而如果没有底层的支持,只使用 tags
分析或是正则表达式匹配是很难达成的,clang正好充当了这一角色。这样,editor
工具可以使用和 compiler
一样的 parser
来完成 edit-time
的语法检查。而gcc就没法很方便地做到这一点。由于历史原因,GCC
是一个单一的可执行程序编译器,其内部完成了从预处理到最后代码生成的全部过程,中间诸多信息都无法被其他程序重用。
Gcc的优势:
· 一些软件用clang编译会出现莫名其妙的错误,但是用gcc编译可以通过。
· GCC在5.0之前一直都在准备用C++实现模块化,期待GCC的5.0会有所突破,补上无法模块化的短板。
目前业界的三大主流C++编译器:VisualC++、g++、Clang++.其中VisualC++最主要的优势是图形化界面,调试方便,但是可用的平台非常有限。这里主要比对g++与Clang++.
Clang 比 GCC
编译器的优势:
· 编译速度更快
· 编译产出更小
· 出错提示更友好,比如clang在编译过程可以直接指出相对简单的出错位置以及它“认为”正确的方式。
· 内置有静态分析工具,可以对代码进行静态分析(clang—analyze)。这也是gcc做不到的。
· 因为clang只需要完成词法和语法分析,代码优化和机器代码的生成工作由llvm完成。所以和全部由自己包下的gcc比起来,clang可以更专注地做好一件事。这种结构也使clang可以被单独拿出来用在其他的程序里,成为其它
app(主要是 IDE)的内嵌 C/C++ parser。对于
IDE 而言,代码补全、重构是重要的功能,然而如果没有底层的支持,只使用 tags
分析或是正则表达式匹配是很难达成的,clang正好充当了这一角色。这样,editor
工具可以使用和 compiler
一样的 parser
来完成 edit-time
的语法检查。而gcc就没法很方便地做到这一点。由于历史原因,GCC
是一个单一的可执行程序编译器,其内部完成了从预处理到最后代码生成的全部过程,中间诸多信息都无法被其他程序重用。
Gcc的优势:
· 一些软件用clang编译会出现莫名其妙的错误,但是用gcc编译可以通过。
· GCC在5.0之前一直都在准备用C++实现模块化,期待GCC的5.0会有所突破,补上无法模块化的短板。
相关文章推荐
- 【c语言基础必备】gcc编译器的简单编译
- 深入研究Clang(四) Clang编译器的简单分析
- 1.编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。 2.编写一个C语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤)。所谓“
- 编译器(GNU & GCC & clang & llvm)
- GCC,LLVM,Clang编译器对比
- 编译器(GNU & GCC & clang & llvm)
- 1.编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。 2.编写一个C语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤)。所谓“
- GCC,LLVM,Clang编译器对比
- Linux下clang、gcc、intel编译器最新版本安装笔记
- GCC,LLVM,Clang编译器对比
- 转:GCC,LLVM,Clang编译器对比
- gcc和vc编译器在语法上的比较(转)
- FreeBSD 10 将使用 Clang 编译器替换 GCC
- GCC,LLVM,Clang编译器对比
- gcc和vc编译器在语法上的比较
- gcc和vc编译器在语法上的比较
- 【转】gcc和vc编译器在语法上的比较
- iOS之GCC,LLVM,Clang三种编译器
- 深入研究Clang(四) Clang编译器的简单分析
- 编译器(GNU & GCC & clang & llvm)