C語言,初次見面~
C語言是一門介於低階語言(如組合語言)和高階語言(如Java,Python)之間的一門程式語言,所以它兼有兩類語言的一些優點,並且具有自身的一些特點。
1、c語言的 高效性 。c語言具有通常是組合語言才具有的微除錯能力,可以根據具體情況微調使得程式更好的使用記憶體或獲得更快的執行速度。
2、c語言的 可移植性 。相對於組合語言、BASIC語言以及FORTRAN語言等,c語言程式能夠稍作修改或甚至不做修改就能在不同計算機系統下執行。
3、 強大 而 靈活 。強大而靈活的UNIX系統大部分就是用c語言寫的;其他語言(如FORTRAN、Perl、Python、Pascal、LISP、Logo、BASIC)的許多編譯器和直譯器也是用c語言寫的。很多高階語言編譯器都會把源程式程式碼編譯為c程式而後才最後生成可執行的機器程式碼。
4、 面向程式設計師 。c語言是一種面向過程的結構化語言,它的編寫非常靈活,也就導致了c程式的編寫在不同程式設計師的操作下就五花八門,它的限制少(如指標運算,雖然這也帶來了一些弊端),提供了開發者更多的自由。
下圖顯示了編譯器在高階語言程式和機器之間扮演的角色:
關於c程式設計的基本策略:用程式將原始碼檔案轉換為可執行檔案。其基本步驟為 編譯 和 連結 ——編譯將原始碼轉換為中間程式碼,而連結器把中間程式碼和其他程式碼合併(包括將編寫的程式和預編譯的庫程式碼合併),生成可執行檔案。
編譯器產生的中間程式碼儲存在目的碼檔案(.obj)中,但這還不是一個完整的程式,它缺少 啟動程式碼 以及 庫函式 等,這些成分的補充需要連結器完成。
有些系統中,編譯器工作時會自動啟用連結器,而有些則需要分別執行編譯程式和連結程式才能得到可執行檔案。
UNIX系統下的c程式設計。首先編輯原始碼,在UNIX系統下編譯可以用cc命令。如
cc example.c
就對example.c原始碼檔案進行了編譯,用 ls 命令可以看到編譯後生成了可執行檔案a.out。輸入
a.out
可以執行該可執行檔案得到程式的輸出。
c編譯器在編譯時會生成與原始碼基本名相同的目的碼檔案,副檔名為 .o ,但是一旦連結器生成了完整的可執行檔案這個 .o 檔案就會被刪除。但是 當原始程式有多個原始碼檔案時,目的碼檔案會被保留。
……
GNU專案中的一個編譯器集合GCC中包含著GCC C編譯器,使用gcc命令便可呼叫GCC C 編譯器。
LLVM專案是一個與編譯器相關的開源軟體集合,它用Clang編譯器處理c程式碼,可通過clang呼叫。
GCC和Clang編譯器都對最新版本的C標準提供支援。
兩者都可以通過-v顯示版本資訊,也都可以使用 cc 來作為gcc或clang的別名,如
cc -v
可以顯示所使用的編譯器及其版本。