淺嘗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-...
    星光社的戴銘閱讀 15,940評論 8 180
  • LLVM 簡介 LLVM 全稱是 Low Level Virtual Machine,它是源自 the Unive...
    juniway閱讀 38,149評論 0 21
  • 1.項目經驗 2.基礎問題 3.指南認識 4.解決思路 ios開發三大塊: 1.Oc基礎 2.CocoaTouch...
    陽光的大男孩兒閱讀 5,016評論 0 13
  • 有些忍耐,無來無去,無有無印,透著無盡的慈悲…… 有些忍耐,帶著含蓄,藏著隱逸,保有靜默,它使時光平和淡遠,它讓歲...
    燕兒_7bb6閱讀 464評論 0 2
  • 生命的本性是莫知其所以然的無止境的向上奮斗,不斷翻新。
    阿珠喔閱讀 159評論 0 0