【注】本文是個(gè)人學(xué)習(xí)clang時(shí)做的一些筆記和整理棵譬,分享一下僅供參考射窒,文中多處摘自參考文章噪窘。
好想有個(gè)能千變?nèi)f化的編譯器,沒錯(cuò)就是它,就是它. -----Clang
簡介
clang是一個(gè)c侯嘀,c++庆冕、oc語言的輕量編譯器,源碼發(fā)布于BSD 協(xié)議下实夹。
- 終端用戶特色
- 快速編譯和較少內(nèi)存占用
- 有診斷功能
- 兼容gcc
一橄浓、查看oc中c語言的實(shí)現(xiàn)源碼
- 使用vim編輯器測試
- 打開vim 建立.c文件
vim test.c
- 寫入測試的代碼,下面測試代碼查看block的實(shí)現(xiàn)(輸入上面指令后亮航,輸入“i”開始編輯荸实,粘貼完后按“esc”鍵,輸入“:wq”缴淋,回車)
#include <stdio.h>
int main () {
void(^blk)(void) = ^{
printf("Block\n");
};
blk();
return 0;
}
vim file
- 編譯,目錄下面會(huì)生成a.out文件
gcc test.c
- 最后使用clang查看源碼,成功會(huì)生成test.cpp文件准给,里面就是源碼
clang -rewrite-objc test.c
生成文件
關(guān)于a.out的維基百科,我看不懂?? 嘗試用終端查看文件宴猾,一大堆亂碼。
test.cpp文件就是相關(guān)的c++實(shí)現(xiàn)
.cpp:只能編譯c++代碼叼旋,.mm是編譯c仇哆,oc罗售,c++棕洋,.h是聲明,.m包含oc和c代碼的文件
二蜈出、編譯oc
- 同樣創(chuàng)建測試代碼文件详民,test.m
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"你好世界!");
}
return 0;
}
- 輸出可執(zhí)行文件
clang -fobjc-arc -framework Foundation test.m -o outputname
可執(zhí)行文件
執(zhí)行結(jié)果
指令解釋
- -fobjc-arc表示編譯需要支持ARC特性
- -framework Foundation表示引用Foundation框架
- test.m是待編譯的源文件名
- -o outputname表示輸出可執(zhí)行文件名是outputname
總結(jié): Clang是一個(gè)C++編寫延欠、基于LLVM、發(fā)布于LLVM BSD許可證下的C/C++/Objective-C/Objective-C++編譯器沈跨。它與GNU C語言規(guī)范幾乎完全兼容;同時(shí)Clang的使用簡單方便,值得我們學(xué)習(xí).