C程序運行原理


計算機不能直接識別和執行高級語言寫的命令,必須用編譯程序(也稱編譯器)把C源程序翻譯成二進制形式的目標程序,然后再將該目標程序與系統的函數庫以及其他目標程序連接起來,形成可執行的目標程序

C語言的編譯和執行需要執行以下步驟和方法

  1. 上機輸入和編輯源程序:通過鍵盤向計算機輸入程序,如發現有錯誤,要及時改正。文件以.c作為后綴,生成源程序文件,如f.c。
  2. 對源程序進行編譯 :先用C編譯系統提供的"預處理器"(又稱"預處理程序"或"預編譯器")對程序中的預處理指令進行編譯預處理。例如,對#include<stdio.h>指令來說,就是將stdio.h頭文件內容讀進來,取代#include<stdio.h>行。由預編譯得到的信息與程序其他部分一起,組成一個完整的、可以用來進行正式編譯的源程序,然后由編譯系統對該源程序進行編譯。
    編譯的作用首先對源程序進行檢查,查看是否存在語法方面的錯誤,存在向編程人員報錯。如果不存在語法錯誤,這時,編譯程序自動把源程序轉換為二進制形成的目標程序(在Visual C++中程序格式為.obj,例如f.obj)
    在用編譯系統對源程序進行編譯時,自動包括了預編譯和正式編譯兩個階段,用戶不必分別發出二次指令
  3. 進行連接處理:經過編譯得到的二進制目標文件(后綴為.obj)還不能供計算機直接執行。前面已說明:一個程序可能包含若干個源程序文件,而編譯是以源程序文件為對象的,一次編譯只能得到與一個源文件相對應的目標文件(也稱目標模塊),它只是整個程序的一部分。必須把所有的編譯后得到的目標模塊連接裝配起來,再與函數庫相連接成一個整體,生成一個可供計算機執行的目標程序,稱為可執行程序(在Visual C++中后綴為.exe,如f.exe)
    即使一個程序只包含一個源程序文件,編譯后的目標程序也不能直接運行,也要經過連接階段,因為要與函數庫進行連接,才能生成可執行程序
    以上工作都是由一個稱為"連接編輯程序(linkage editor)"的軟件來實現的
  4. 運行可執行程序,得到運行結果: 將可執行程序.exe輸入到計算機,並使之運行,得到結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM