C編譯器的八個編譯階段

編譯程序有八個步驟。這些步驟包括:

 

1.  從源代碼文件中讀取字符,如果有必要的話,將字符轉換成源代碼字符集的字符。如果源代碼中的行尾字符和換行字符不一樣,就進行替換。類似地,任何三字符組符號會被替換成賭贏的單一字符。

 

2.  不管什麼時候,只要反斜線符號後面緊跟着換行字符,預處理器就會將兩者(反斜線和換行字符)都刪除。因爲預處理器的指令結束的地方就是行的結束字符,所以這個處理步驟會將反斜線放在一行的結尾處,以讓預處理指令在下一行繼續。

 

3.  此源代碼文件被分解成預處理器的記號和空格符。每個註釋都被視爲一個空格。

 

4.  預處理指令被執行,宏被展開

 

5. “字符常量”和“字符串字面值”內的字符和轉義符,會被轉換成“運行字符集”中對應的字符。

 

6.  相鄰的字符串字面值被串接成一個字符串。

 

7.  實際的編譯工作開始:編譯器分析記號的序列,併產生對應的機器碼

 

8.  鏈接器解析對外部對象和函數的引用,併產生可執行文件。如果模塊引用的外部對象或函數沒有被定義在任何翻譯單元中,鏈接器就會從外部的標準鏈接庫或其他指定的鏈接庫中複製它們。在一個程序中,一定不能多次定義外部對象和函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章