zoukankan      html  css  js  c++  java
  • 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的介绍写的很好

  • 相关阅读:
    网络协议
    面向对象三大特性之多态
    面向对象三大特性之封装
    面向对象三大特性之继承
    python面向对象编程
    常用模块之configpaser与shutil
    XML模块
    Python模块之OS,subprocess
    Python日志(logging)模块,shelve,sys模块
    Linux 配置 Nginx
  • 原文地址:https://www.cnblogs.com/chebaodaren/p/9259325.html
Copyright © 2011-2022 走看看