C語言 我們在學習電腦學科時,往往最先接觸到的編程語言是C,它是所有語言中,最接近底層的高級語言之一,因而它具有執行速度快的優點。但它又具有開發周期長和對於經驗不足的開發者極容易犯錯的缺點。C語言應用範圍廣泛,你幾乎可以在任何場景中看到它的影子。 C語言編譯原理 一個編寫好的C代碼經過編譯成可執行 ...
C語言
我們在學習電腦學科時,往往最先接觸到的編程語言是C,它是所有語言中,最接近底層的高級語言之一,因而它具有執行速度快的優點。但它又具有開發周期長和對於經驗不足的開發者極容易犯錯的缺點。C語言應用範圍廣泛,你幾乎可以在任何場景中看到它的影子。
C語言編譯原理
一個編寫好的C代碼經過編譯成可執行程式需要經過以下4步:
1)預處理:巨集定義展開、頭文件展開、條件編譯等,同時將代碼中的註釋刪除(這一步並不會檢車語法)
2)編譯:檢查語法,將預處理後的文件編譯生成彙編文件
3)彙編:將彙編文件生成目標文件(二進位文件)
4)鏈接:C語言寫的程式是需要依賴各種庫的,所以編譯之後還需要把庫鏈接到最終的可執行程式中去。
由上圖可知,一個C源代碼首先會經過預處理,在這期間,會將巨集定義展開、頭文件展開,條件編譯等,同時會去掉註釋,預處理結束後會生成新的.c文件。再經由編譯器,將新的.c文件編譯成彙編文件,在此期間會檢查語法。接著將彙編文件經由彙編模塊生成機器可直接識別的目標文件,即二進位文件。最後目標文件通過鏈接器將啟動代碼和系統庫鏈接在一起,生成最終的可執行程式。