热门问题
时间线
聊天
视角
Clang
編譯器前端 来自维基百科,自由的百科全书
Remove ads
Clang(發音為/ˈklæŋ/類似英文單字clang[4]) 是一個C、C++、Objective-C和Objective-C++程式語言的編譯器前端。它採用了LLVM作為其後端,由LLVM2.6開始,一起釋出新版本。它的目標是提供一個GNU編譯器套裝(GCC)的替代品,支援了GNU編譯器大多數的編譯設置以及非官方語言的擴充功能。作者是克里斯·拉特納(Chris Lattner),在蘋果公司的贊助支援下進行開發,而原始碼特許是使用類BSD的伊利諾伊大學厄巴納-香檳分校開原始碼許可。
Clang專案包括Clang前端和Clang靜態剖析器等。[5]
Remove ads
概述
這個軟件專案在2005年由蘋果公司發起,是LLVM編譯器工具集的前端(front-end),目的是輸出代碼對應的抽象語法樹(Abstract Syntax Tree, AST),並將程式碼編譯成LLVM Bitcode。接着在後端(back-end)使用LLVM編譯成平台相關的機器語言 。Clang支援C、C++、Objective C。
在Clang語言中,使用Stmt來代表statement。Clang程式碼的單元(unit)皆為陳述式(statement),語法樹的節點(node)類型就是Stmt。另外Clang的表達式(Expression)也是陳述式的一種,Clang使用Expr來代表Expression,Expr本身繼承自Stmt。節點之下有子節點列表(sub-node-list)。
Clang本身效能優異,其生成的AST所耗用掉的主記憶體僅僅是GCC的20%左右。FreeBSD作業系統自2014年1月發行的10.0版本開始將Clang/LLVM作為預設編譯器[6]。
Remove ads
效能
測試證明Clang編譯Objective-C代碼時速度為GCC的3倍[7],還能針對用戶發生的編譯錯誤準確地給出建議[8]。
版本歷史
這個表格只記錄了Clang歷史中特別的階段與版本
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads