clang 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
clang 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
clang 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 BSD
开发语言 C/C++
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 红薯
适用人群 未知
收录时间 2012-01-13

软件简介

Clang 是一个 C++ 编写、基于 LLVM、发布于 LLVM BSD 许可证下的 C/C++/Objective C/Objective C++ 编译器,其目标(之一)就是超越 GCC

Clang 开发事出有因,Wiki 介绍如下:

Apple 使用 LLVM 在不支持全部 OpenGL 特性的 GPU (Intel 低端显卡) 上生成代码 (JIT),令程序仍然能够正常运行。之后 LLVM 与 GCC 的集成过程引发了一些不快,GCC 系统庞大而笨重,而 Apple 大量使用的 Objective-C 在 GCC 中优先级很低。此外 GCC 作为一个纯粹的编译系统,与 IDE 配合很差。加之许可证方面的要求,Apple 无法使用修改版的 GCC 而闭源。于是 Apple 决定从零开始写 C family 的前端,也就是基于 LLVM 的 Clang 了。

Clang 的特性:

  1. 快:通过编译 OS X 上几乎包含了所有 C 头文件的 carbon.h 的测试,包括预处理 (Preprocess),语法 (lex),解析 (parse),语义分析 (Semantic Analysis),抽象语法树生成 (Abstract Syntax Tree) 的时间,Clang 是 Apple GCC 4.0 的 2.5x 快。(2007-7-25)
  2. 内存占用小:Clang 内存占用是源码的 130%,Apple GCC 则超过 10x。
  3. 诊断信息可读性强:我不会排版,推荐去网站观看。其中错误的语法不但有源码提示,还会在错误的调用和相关上下文的下方有~~~~~和^的提示,相比之下 GCC 的提示很天书。
  4. GCC 兼容性。
  5. 设计清晰简单,容易理解,易于扩展增强。与代码基础古老的 GCC 相比,学习曲线平缓。
  6. 基于库的模块化设计,易于 IDE 集成及其他用途的重用。由于历史原因,GCC 是一个单一的可执行程序编译器,其内部完成了从预处理到最后代码生成的全部过程,中间诸多信息都无法被其他程序重用。Clang 将编译过程分成彼此分离的几个阶段,AST 信息可序列化。通过库的支持,程序能够获取到 AST 级别的信息,将大大增强对于代码的操控能力。对于 IDE 而言,代码补全、重构是重要的功能,然而如果没有底层的支持,只使用 tags 分析或是正则表达式匹配是很难达成的。
展开阅读全文

评论

点击加入讨论🔥(2)
发表于开发技能专区
2019/01/30 08:11

英特尔基于 LLVM 的 SYCL 开源编译器现已发布

上周,英特尔发布了 LLVM/Clang 的对 SYCL 编程的支持,该特性作为英特尔 CPU、FPGA和其他处理器支持的异构变成的一部分。更多关于这些特性细节信息,请移步到 intel/llvm on GitHub 。 通过 GitHub ,我们发现英特尔准备对 SYCL 编译器和运行时进行功能开发,支持运行该编译器的系统版本是 OpenCL2.1 。 他们正在准备他们最初的SYCL编译器和运行时支持。在这里可以找到这个新的SYCL编译器的文档。它还需要在主机系统上提供Ope...

0
7
发表于软件架构专区
2018/04/22 08:07

苹果投资 Clangd 与重构工具,强化自家 IDE Xcode

近日,苹果员工 Alex L 代表公司发表声明称,对于基于 libclang 的工具基础设施的工作,已经做了工作重心转移。苹果认为 Clangd 是交互式 Clang 工具的首选解决方案,他们将把更多精力放在加入 Clangd 的开发中。通过在 Clangd 上实现一些新功能,以整合进 Apple 的跨语言 IDE Xcode。 苹果表示将在 Clangd 中支持完全不同的传输层协议,并将 LSP 的实现分为两层:逻辑 LSP 层和 JSON-RPC 传输层。 这将允许增加对 Apple 的 XP...

0
2
发表了资讯
2015/10/23 00:00

Visual C++ 将整合 Clang

微软在 11 月释出的 Visual C++更新将整合 Clang 开源 C 和 C++编译器, 开发者将可以用 Clang 编译Windows应用程序。Visual Studio 2015已经整合了Clang编译器,但它是被用于Android和 iOS上的应用开发,而这一次整合是用之开发Windows程序。Visual C++由多部分构成,其中包括前端编译器,用于生成代表程序内容的抽象语法树;后端编译器则读取抽象语法树生成执行代码。前端编译器称为C1,后端称为 C2,由微软的不同团队开发。最...

22
13
发表了资讯
2015/05/03 00:00

微软将 Clang 带到 Windows

微软的集成开发工具现在支持使用Clang构建Android和iOS应用。Clang是LLVM的编译器前端。微软的Jim Radigan在Build大会上演示了这一功能:Clang 作为前端,微软的编译器C2作为后端替代LLVM。 微软认为,C++开发者将会受益于Visual Studio的新功能,大量代码将可以在多平台上共用,而Visual Studio有望成为C++开发者跨平台开发的单一编译器。...

32
20
发表了资讯
2013/04/22 00:00

Clang 宣布全面支持 C++11 标准

Clang 的开发者宣布支持所有的 C++11 语言标准特性,C++11 语言标准是在 2011年夏季发布的。最新的 ISO 标准特性添加了支持继承构造器和 thread_local 变量。 LLVM 3.3 和 Clang 计划在 2013年6月推出,这应该是首个完全支持 C++11 特性的编译器。而今年3月发布的 GCC 4.8 版本尽管也支持大多数该语言特性,但还是有很少一部分尚未实现,详情请看此页。关于支持 C++11 标准的编译器概览可以查看此页。 现在 Clang 对 C++11 的支...

26
16
发表了资讯
2012/11/08 00:00

clang 成为 FreeBSD x86 的默认编译器

来自 FreeBSD 邮件列表的消息称:clang 已经成为了 x86 版本 FreeBSD 的默认编译器,目前可能还会有一个 ABI 问题,但详细大多数用户可以非常平滑的过渡。 Clang 是一个 C++ 编写、基于 LLVM、发布于 LLVM BSD 许可证下的 C/C++/Objective C/Objective C++ 编译器,其目标(之一)就是超越 GCC。

9
7
发表了资讯
2012/05/23 00:00

Clang 3.1 发布,支持 C++11

Clang 是一个 C++ 编写、基于 LLVM、发布于 LLVM BSD 许可证下的 C/C++/Objective C/Objective C++ 编译器,其目标(之一)就是超越 GCC。 Clang 3.1 支持匿名结构和匿名 union,可使用 =std=c11 和 -std=gnull 来启用对新语言标准的支持。 Clang 3.1 支持最新 ISO C++ 标准 C++ 2011 中的绝大多数特性。使用 -std=c++11 或者 -std=gnu++11 用于启用支持,另外在 Clang 3.0 基础上对以下特性进行了改进: Generalized constant...

14
3
发表了资讯
2012/05/13 00:00

FreeBSD 10 将使用 Clang 编译器替换 GCC

来自 phoronix 的消息称,根据 FreeBSD 2012 第一季度的状态报告 显示,来自 LLVM 的 Clang 编译器将成为 FreeBSD 10 的默认 C/C++ 编译器,废弃使用 GPL 授权协议的 GCC,而 Clang 的授权协议是 BSD。 Clang 是一个 C++ 编写、基于 LLVM、发布于 LLVM BSD 许可证下的 C/C++/Objective C/Objective C++ 编译器,其目标(之一)就是超越 GCC。 Clang 开发事出有因,Wiki 介绍如下: Apple 使用 LLVM 在不支持全部 OpenGL 特性的 ...

16
7
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
2 评论
116 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部