當編寫 C++ 程式時,必須將其輸入計算機並儲存到檔案中。一個類似於文書處理程式的文字編輯器被用於該任務。由程式設計師編寫的語句稱為
原始碼,其儲存的檔案稱為
原始檔。
在將原始碼儲存到檔案之後,就可以開始將其轉換為機器語言的過程。在此過程的第一階段,稱為前處理器的程式讀取原始碼。預處理程式將搜尋以#符號開頭的特殊行。這些行包含命令或指令,這些命令使前處理器以某種方式修改或處理原始碼。
在下一階段,編譯器逐步通過預處理的原始碼,將每個原始碼指令轉換為適當的機器語言指令。此過程將揭示程式中可能出現的任何語法錯誤。語法錯誤包括非法使用關鍵字、運算子、標點符號和其他語言元素等。如果程式沒有語法錯誤,則編譯器會將翻譯後的機器語言指令,也就是所謂的
目的碼,儲存在
目標檔案中。
雖然目標檔案包含機器語言指令,但它並不是一個完整的程式。原因如下:C++ 方便地配備了用於執行常規操作或某些困難任務的預先編寫完成的程式碼庫。例如,該庫包含用於在螢幕上顯示訊息並從鍵盤讀取輸入內容的具體硬體的程式碼。它還提供數學函數(例如計算數位的平方根)的例程。這個程式碼的集合稱為執行時庫,它是廣泛性的,所以程式難免要用到它的一部分。然而,當編譯器生成目標檔案時,它並不包括程式設計師可能使用到的任何執行時庫例程的機器程式碼。在翻譯過程的最後階段,另一個名為連結器的程式會將目標檔案與必需的執行時庫例程相結合。一旦連結器完成此步驟,則會建立一個
可執行檔案。可執行檔案包含機器語言指令或可執行程式碼,並已經可以在計算機上執行。
圖 1 將C++原始檔轉換為可執行檔案的過程