clang查看Objective-C中C语言实现源码

  • 有时候查看OC中C语言的源码是很有必要的,这会帮助我们了解更为底层的实现,只有弄懂了原理这些东西才是我们自己的
  • clang(LLVM编译器)具有转换为我们可读源代码的功能,可以将OC转换为C++的源代码

而C++,其实也仅是使用struct结构,其本质是C语言源代码

  • 如果你想要更好的了解iOS编译Clang LLVM, 请点击查看

下面我们以看查看Block源码为例

  • 使用的是Vim编辑器来测试的哈
  • 打开vim建立.c文件:vim testBlockVim.c
  • 写入测试Block源码的代码:
#include 
int main () {
 void(^blk)(void) = ^{
  printf("Block\n");
  };
  blk();
  return 0;
}
  • 编译:gcc testBlockVim.c

如果编辑成功恭喜你,很久没写C代码都可以一次通过

  • 使用clang查看Block语法源码:clang -rewrite-objc testBlockVim.c

其实就是语句:clang -rewrite-objc 源代码文件名

  • 没有任何反应是vim编辑器最好的反应吧,我们打开自己建立文件夹的地方,可以看到如下图:
clang查看Objective-C中C语言实现源码_第1张图片
屏幕快照 2017-08-06 10.21.58.png
  • 多了一个testBlockVim.cpp的文件,我们看到这个文件,看到的是非常多的代码,如下图:

.cpp:只能编译C++代码的意思,我们的.mm是编译:C,OC,C++,.h是声明,.m是包含OC和C代码的文件

clang查看Objective-C中C语言实现源码_第2张图片
屏幕快照 2017-08-06 10.23.41.png
  • 可能太多了,所以我们可以使用command+f查看impl实现会少很多吧!理解一下应该看可以如下图实现的Block:

最后的时候其实就在代码的最后,只是第一张图片结构体的申明在前面

clang查看Objective-C中C语言实现源码_第3张图片
屏幕快照 2017-08-06 10.27.12.png
clang查看Objective-C中C语言实现源码_第4张图片
屏幕快照 2017-08-06 10.27.36.png
  • 同时vim不好用我们可以使用Xcode建立c代码或者直接在iOS开发建立C文件测试,不过这样可是编译不过的哈,涉及到有int main的时候
  • 希望你还没有忘记xcode如何建立C项目,打开xcode->File->new->project->选择macOS的Command Line Tool->next下一步的时候要选择语言为C哈:
clang查看Objective-C中C语言实现源码_第5张图片
屏幕快照 2017-08-06 10.33.14.png
  • 如果不会的学会了可以给我一个喜欢哦,如果这样会激发你看OC实现的源代码那就是最好的了

你可能感兴趣的:(clang查看Objective-C中C语言实现源码)