程式環境和預處理

2021-10-06 08:37:59 字數 705 閱讀 2204

翻譯環境中源**被轉換為可執行的機器命令。

預編譯:預處理指令。標頭檔案的包含,注釋刪除,#define處理。

相當於根據預處理指令組裝新的c/c++程式。經過預處理,會產生乙個沒有標頭檔案(都已經被展開了)、巨集定義(都已經替換了),沒有條件編譯指令(該遮蔽的都遮蔽掉了),沒有特殊符號的輸出檔案,這個檔案的含義同原本的檔案無異,只是內容上有所不同。

編譯:語法分析,詞法分析,語義分析,符號彙總。

將預處理完的檔案逐一進行一系列詞法分析、語法分析、語義分析及優化後,產生相應的彙編**檔案。編譯是針對單個檔案編譯的,只校驗本檔案的語法是否有問題,不負責尋找實體。

彙編:形成符號表,把彙編**轉換成二進位制**。

鏈結:合併段表,符號表的合併和符號表的重定位。

通過鏈結器將乙個個目標檔案(或許還會有庫檔案)鏈結在一起生成乙個完整的可執行程式。 鏈結程式的主要工作就是將有關的目標檔案彼此相連線,也就是將在乙個檔案中引用的符號同該符號在另外乙個檔案中的定義連線起來,使得所有的這些目標檔案成為乙個能夠被作業系統裝入執行的統一整體。在此過程中會發現被呼叫的函式未被定義。需要注意的是,鏈結階段只會鏈結呼叫了的函式/全域性變數,如果存在乙個不存在實體的宣告(函式宣告、全域性變數的外部宣告),但沒有被呼叫,依然是可以正常編譯執行的。

執行環境用於實際執行**。

程式環境和預處理

程式環境 1.翻譯環境 編譯 鏈結 先將組成乙個程式的每個原始檔通過編譯轉換成目標檔案,再將每個目標檔案通過編譯器 在一起鏈結成乙個 可執行檔案 翻譯過程 1.預處理 c c 標頭檔案展開,巨集替換,去注釋,條件編譯 2.編譯 c 彙編 3.彙編 彙編 二進位制 4.鏈結 常見的鏈結方式 2.執行環...

程式環境和預處理

一 程式的編譯環境和執行環境 1 每乙個程式的原始檔都會通過編譯過程轉換為相應的目標 2 每乙個目標 由鏈結器 在一起,形成乙個單一的可執行程式。3 鏈結器同時也會引入標準庫函式中被程式任意引用的庫函式,而且還可以搜尋程式設計師的個人程式庫,將需要的函式也鏈結到程式之中。編譯分為幾個階段組成 程式執...

程式環境和預處理

一 程式環境那麼,就會有人問了,為什麼不直接將c語言轉換成二進位制呢?這就要從c語言的發展來說起了。起初,是沒有程式語言的,有的只是紙段,紙段上打眼來編寫程式,放入計算機中來計算,這種方法往往效率低並且計算複雜。而後,有了組合語言,人們拜託了紙段的束縛。但是,人們嫌組合語言還是不夠精簡,也就是使用複...