導航:首頁 > 源碼編譯 > c語言編譯是從上到下的嗎

c語言編譯是從上到下的嗎

發布時間:2022-10-04 04:55:47

1. 開發一個c語言程序要經過哪四個步驟

開發一個C語言程序需要經過的四個步驟:編輯、編譯、連接、運行。

C語言程序可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C源代碼編譯、連接成目標二進制文件之後即可運行。

1、預處理:輸入源程序並保存(.C文件)。

2、編譯:將源程序翻譯為目標文件(.OBJ文件)。

3、鏈接:將目標文件生成可執行文件( .EXE文件)。

4、運行:執行.EXE文件,得到運行結果。

(1)c語言編譯是從上到下的嗎擴展閱讀:

C語言代碼變為程序的幾個階段:

1、首先是源代碼文件test.c和相關的頭文件,如stdio.h等被預處理器cpp預處理成一個.i文件。經過預編譯後的.i文件不包含任何宏定義,因為所有的宏已經被展開,並且包含的文件也已經被插入到.i文件中。

2、編譯過程就是把預處理完的文件進行一系列的詞法分析、語法分析、語義分析以及優化後產生相應的匯編代碼文件,這個過程往往是我們所說的整個程序的構建的核心部分,也是最復雜的部分之一。

3、匯編器不直接輸出可執行文件而是輸出一個目標文件,匯編器可以調用ld產生一個能夠運行的可執行程序。即需要將一大堆文件鏈接起來才可以得到「a.out」,即最終的可執行文件。

4、在鏈接過程中,對其他定義在目標文件中的函數調用的指令需要被重新調整,對實用其他定義在其他目標文件的變數來說,也存在同樣問題。

參考資料來源:網路-c語言

2. C語言文件的編譯與執行的四個階段並分別描述

開發C程序有四個步驟:編輯、編譯、連接和運行。

任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。

1、預處理:導入源程序並保存(C文件)。

2、編譯:將源程序轉換為目標文件(Obj文件)。

3、鏈接:將目標文件生成為可執行文件(EXE文件)。

4、運行:執行,獲取運行結果的EXE文件。

(2)c語言編譯是從上到下的嗎擴展閱讀:

將C語言代碼分為程序的幾個階段:

1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。

2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。

3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。

4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。

3. c語言時是從上往下走直到遇到maid才開始編譯嗎這樣系統從上往下走把聲明的先記住再開始編譯嗎

糾正一下,是main函數。編譯時,前面除了頭文件和一些全局變數等等,都是直接略過,到main函數在開始。

4. C語言源程序的編譯過程包括哪三個階段

編譯:將源程序轉換為擴展名為.obj的二進制代碼
連接:將obj文件進行連接,加入庫函數等生成可執行文件
運行:執行可執行文件,有錯返回修改,無錯結束

5. C語言中總是從main函數開始執行,那執行好main函數後,是按照從上到下的順序執行嗎

進入程序後,就開始找main函數,可能是int main也可能是void main等。
然後可能遇到判斷、循環、分支結構,然後按各自的語法分別執行,還可能遇到被調函數,到了那裡就再去執行被調函數,執行完被調函數就再回來。
直到main函數全部執行完畢,直到最後一行結束,然後程序退出,運行界面出現perss any key to continue。
順序就是從上到下。遇到一些結構遵循結構的語法進行,但是整體順序就是由上到下。

6. C語言文本模式的運行過程是從上往下,從左往右的順序運行的嗎

不是,是以main函數作為入口,以函數為單位運行的
函數內部,不考慮控制語句情況下才是你說的順序

7. C語言源程序到運行程序經過哪幾個步驟

1、預處理

在這一階段,源碼中的所有預處理語句得到處理,例如:#include語句所包含的文件內容替換掉語句本身,所有已定義的宏被展開。

根據#ifdef,#if等語句的條件是否成立取捨相應的部分,預處理之後源碼中不再包含任何預處理語句。

GCC預處理階段可以生成.i的文件,通過選項-E可以使編譯器在預處理結束時就停止編譯。例如:gcc -E -o hello.i hello.c

2、編譯

這一階段,編譯器對源碼進行詞法分析、語法分析、優化等操作,最後生成匯編代碼。這是整個過程中最重要的一步,因此也常把整個過程稱為編譯。

可以通過選項-S使GCC在進行完編譯後停止,生成.s的匯編程序。例如:gcc -S -o hello.s hello.c

3、匯編

這一階段使用匯編器對匯編代碼進行處理,生成機器語言代碼,保存在後綴為.o的目標文件中。

當程序由多個代碼文件構成時,每個文件都要先完成匯編工作,生成.o目標文件後,才能進入下一步的鏈接工作。

目標文件已經是最終程序的某一部分了,只是在鏈接之前還不能執行。可以通過-c選項生成目標文件:gcc -c -o hello.o hello.c

4、鏈接

經過匯編以後的機器代碼還不能直接運行。為了使操作系統能夠正確載入可執行文件,文件中必須包含固定格式的信息頭,還必須與系統提供的啟動代碼鏈接起來才能正常運行,這些工作都是由鏈接器來完成的。gcc -o hello hello.c

5、運行:執行.EXE文件,得到運行結果。

8. 編譯階段 (C語言)到底指的是什麼階段呀

編譯和鏈接過程,把C語言源程序翻譯為可以執行的exe文件(或者dll、com)。

編譯則是把C語言程序翻譯為機器指令,CPU可以執行指令,但無法執行C語言源程序,所以需要一個翻譯,編譯就是這個過程。

9. C語言的編譯過程

C編譯的整個過程很復雜,大致可以分為以下四個階段:

  1. 預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。

  2. 編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。

  3. 匯編階段將匯編語言翻譯成機器指令。

  4. 鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。

閱讀全文

與c語言編譯是從上到下的嗎相關的資料

熱點內容
前端錄制文件如何上傳伺服器 瀏覽:534
雅黑pdf 瀏覽:454
python使用領域 瀏覽:877
買蘭博基尼用什麼app 瀏覽:135
android關閉後台運行 瀏覽:505
python輸出路徑為超鏈接 瀏覽:531
caxa為什麼沒有加密鎖 瀏覽:792
伺服器怎麼設置才能用IP訪問 瀏覽:663
郵件附件加密後打開能顯示嗎 瀏覽:723
榮耀x10拍照演算法 瀏覽:569
androidgradle配置簽名 瀏覽:96
文件夾左邊的空心三角符號是什麼 瀏覽:285
app英語音頻試卷掃碼怎麼聽 瀏覽:613
字元串編譯預處理 瀏覽:704
蘋果手機怎麼會顯示多個App 瀏覽:241
不去互聯網程序員 瀏覽:553
電腦qq郵箱解壓的圖片保存在哪裡 瀏覽:548
嵌入命令行 瀏覽:94
檔案為什麼被加密 瀏覽:487
十天學會單片機13 瀏覽:876