美文网首页iOS开发笔记
浅尝iOS使用clang

浅尝iOS使用clang

作者: Simon_____ | 来源:发表于2017-09-15 13:47 被阅读398次

【注】本文是个人学习clang时做的一些笔记和整理,分享一下仅供参考,文中多处摘自参考文章。

好想有个能千变万化的编译器,没错就是它,就是它. -----Clang

简介

clang是一个c,c++、oc语言的轻量编译器,源码发布于BSD 协议下。

  • 终端用户特色
  • 快速编译和较少内存占用
  • 有诊断功能
  • 兼容gcc

一、查看oc中c语言的实现源码

  • 使用vim编辑器测试
  • 打开vim 建立.c文件
vim test.c

  • 写入测试的代码,下面测试代码查看block的实现(输入上面指令后,输入“i”开始编辑,粘贴完后按“esc”键,输入“:wq”,回车)
#include <stdio.h>
int main () {
 void(^blk)(void) = ^{
  printf("Block\n");
  };
  blk();
  return 0;
}
vim file
  • 编译,目录下面会生成a.out文件
gcc test.c
  • 最后使用clang查看源码,成功会生成test.cpp文件,里面就是源码
clang -rewrite-objc test.c
生成文件

关于a.out的维基百科,我看不懂😭 尝试用终端查看文件,一大堆乱码。

test.cpp文件就是相关的c++实现

.cpp:只能编译c++代码,.mm是编译c,oc,c++,.h是声明,.m包含oc和c代码的文件

二、编译oc

  • 同样创建测试代码文件,test.m
#import <Foundation/Foundation.h>
        int main(int argc, const char * argv[]) {
         @autoreleasepool {
           // insert code here...
        NSLog(@"你好世界!");
        }
        return 0;
     }
  • 输出可执行文件
clang -fobjc-arc -framework Foundation test.m -o outputname
可执行文件 执行结果

指令解释

  • -fobjc-arc表示编译需要支持ARC特性
  • -framework Foundation表示引用Foundation框架
  • test.m是待编译的源文件名
  • -o outputname表示输出可执行文件名是outputname

总结: Clang是一个C++编写、基于LLVM、发布于LLVM BSD许可证下的C/C++/Objective-C/Objective-C++编译器。它与GNU C语言规范几乎完全兼容;同时Clang的使用简单方便,值得我们学习.

参考文章

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

iOS 浅谈Clang的使用

相关文章

网友评论

    本文标题:浅尝iOS使用clang

    本文链接:https://www.haomeiwen.com/subject/wumssxtx.html