關於GNU規範的語法擴展

  • GNU 是一款能用於構建類 Unix 操做系統的計算機軟件合集,由自由軟件之父 Richard Stallman 開創,於 1983 年 9 月 27 日對外發布。GNU 徹底由自由軟件(free software)構成。
  • GNU 語法擴展源自於 GCC 編譯器,在 1987 年發佈 1.0 版本,稱爲 GNU C Compiler。隨後,GCC 編譯器前端支持了 C++、Objective-C/C++、Fortran、Ada、Java 以及最近躍升的 Go 等編程語言,所以如今 GCC 被稱爲 GNU Compiler Collection。
  • 因爲在 20 世紀 90 年代,GNU C 編譯器就對 C90 標準作了至關多的語法擴展,包括複合字面量、匿名結構體和數組、可指定的初始化器等,這些語法擴展被普遍使用,尤爲是大量用於 Linux 內核代碼中,所以 C99 標準將這些語法特性全都列入標準之中。
  • 正由於 GCC 自己是開源自由軟件,所以不少商用編譯器也基於 GCC 進行擴展,例如:
  • 像 ARM 的 RVCT(RealView Compiler Toolkit)自己就支持 GNU 擴展;
  • 還有很多開發平臺自己就直接使用 GCC 編譯工具。
  • 因爲有很多大公司頂級開發人員的參與,所以 GCC 編譯器的目標代碼優化能力至關高,並且還支持許多不一樣的處理器。因此,GCC 當前被普遍使用並博得開發者的好評。像 Linux 操做系統基本默認使用 GCC 做爲默認編譯器,包括 Android 的 NDK 開發工具一開始也是如此。
  • 然而,因爲 GCC 基於比較嚴格的 GPL 許可證,許多大型商業開發商對它望而卻步。該許可證容許使用者無償使用軟件,可是要求不能隨意對它進行篡改並從新發布。若是開發者對它進行篡改,而後發佈本身修改以後的軟件,那麼必需要把本身修改的那部分也開源出來。
  • 所以,在 2003 年誕生了一個 LLVM 開源項目,基於更爲寬鬆的 BSD 許可證,其編譯器稱爲 Clang。BSD 許可證容許開發者隨意對軟件進行修改並從新發布,甚至能夠將修改過的版本做爲自主版權,於是這個許可證深受大公司的歡迎。
  • 如今 Apple 對 LLVM 項目的投入很是大。macOS 上的開發工具 Xocde 從 4.0 版本起就開始使用 Clang 編譯工具鏈,隨後 Apple 將本身改寫的 Clang 編譯器稱爲 Apple LLVM。當前最新的 Xcode 8 所使用的 Apple LLVM 版本爲 8.x。
  • 而當前 Android NDK 也支持了 Clang 編譯器工具鏈。
  • Clang 編譯器並不是基於 GCC,它是從頭開始寫的。可是它的目標是儘可能與 GCC 編譯器兼容,因此Clang 編譯器包含大部分 GNU 語法擴展,除此以外還含有它本身特有的C語言擴展。固然也有一些特性是 GCC 含有而 Clang 不具有的,不過這些特性通常不多使用。
  • 咱們如今能夠看到 GNU 語法擴展適用性十分普遍。若是讀者當前在作 Linux/Unix 或 Windows 上的C語言編程開發,或者是在開發 macOS/iOS 應用,又或者是在開發 Android 應用,那麼徹底能夠毫無顧忌地使用 GNU 語法擴展。
相關文章
相關標籤/搜索