浅尝iOS使用clang

【注】本文是个人学习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的使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 2000年,伊利诺伊大学厄巴纳-香槟分校(University of Illinois at Urbana-...
    星光社的戴铭阅读 16,157评论 8 180
  • LLVM 简介 LLVM 全称是 Low Level Virtual Machine,它是源自 the Unive...
    juniway阅读 38,678评论 0 21
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 10,470评论 0 13
  • 有些忍耐,无来无去,无有无印,透着无尽的慈悲…… 有些忍耐,带着含蓄,藏着隐逸,保有静默,它使时光平和淡远,它让岁...
    燕儿_7bb6阅读 3,273评论 0 2
  • 生命的本性是莫知其所以然的无止境的向上奋斗,不断翻新。
    阿珠喔阅读 1,228评论 0 0