【注】本文是个人学习clang时做的一些笔记和整理,分享一下仅供参考,文中多处摘自参考文章。
好想有个能千变万化的编译器,没错就是它,就是它. -----Clang
简介
clang是一个c,c++、oc语言的轻量编译器,源码发布于BSD 协议下。
终端用户特色
快速编译和较少内存占用
有诊断功能
兼容gcc
一、查看oc中c语言的实现源码
使用vim编辑器测试
打开vim 建立.c文件
vim test.c
写入测试的代码,下面测试代码查看block的实现(输入上面指令后,输入“i”开始编辑,粘贴完后按“esc”键,输入“:wq”,回车)
#include
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
生成文件
test.cpp文件就是相关的c++实现
.cpp:只能编译c++代码,.mm是编译c,oc,c++,.h是声明,.m包含oc和c代码的文件
二、编译oc
同样创建测试代码文件,test.m
#import
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的使用简单方便,值得我们学习.
参考文章