iOS--clang
clang 读作 克朗
因为最近在看block,老看到有人用clang编译出来一堆乱七八糟的说是c++的代码,所以就好奇这是啥玩意儿
这东西在开发过程中应该用不到,我决定简单了解一下就行
苹果系统之前用的编译器是GCC,但是做GCC的那帮人不愿意帮苹果针对oc进行优化,毕竟那帮人是搞开源的,而苹果又老搞封闭,不买帐也正常
这时候克里斯搞出来一个llvm,然后苹果就把克里斯包养了,然后就为了oc进行了优化,结果就是出来了clang
一个比较好的clang介绍:
Clang ( 发音为 /klæŋ/) 是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程语言。Clang 对源程序进行词法分析和语义分析,并将分析结果转换为 Abstract Syntax Tree ( 抽象语法树 ) ,最后使用 LLVM 作为后端代码的生成器。
我的理解就是,clang先对代码进行预编译,然后再交给llvm生成二进制语言
所以oc的代码经过clang编译之后是勉强能看懂的,而且可以从中看到一些内部的实现原理
我们在说到GCC的时候提到了GDB,说它能够纠错,我们也谈到Clang相比较GCC有更好的诊断纠错能力,相对应的,Clang下纠错工具就是LLDB。
GDB没有一个不错的GUI,默认只有命令行接口(CLI)可用,没那么亲合上手。虽然有几个前段程序为其补强,但还是差强人意。GDB的这个缺点在LLDB上没有,所以LLDB的一个优点就是有一个良好的GU。
这个lldb还是要好好学一下的
https://www.ibm.com/developerworks/cn/opensource/os-cn-clang/
这篇文章写的挺好的,可惜我看到他更新到2016.9月就不更新了,可能自己创业去了吧
https://www.ibm.com/developerworks/cn/opensource/os-cn-clang/
这篇文章是ibm的,关于clang的介绍写的很好