欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C/C++程序編譯流程詳解

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

程序的基本流程如圖:

1.預(yù)處理

預(yù)處理相當(dāng)于根據(jù)預(yù)處理指令組裝新的C/C++程序。經(jīng)過預(yù)處理,會(huì)產(chǎn)生一個(gè)沒有宏定義,沒有條件編譯指令,沒有特殊符號(hào)的輸出文件,這個(gè)文件的含義同原本的文件無異,只是內(nèi)容上有所不同。

讀取C/C++源程序,對(duì)其中的偽指令(以#開頭的指令)進(jìn)行處理

①將所有的“#define”刪除,并且展開所有的宏定義

②處理所有的條件編譯指令,如:“#if”、“#ifdef”、“#elif”、“#else”、“endif”等。這些偽指令的引入使得程序員可以通過定義不同的宏來決定編譯程序?qū)δ男┐a進(jìn)行處理。預(yù)編譯程序?qū)⒏鶕?jù)有關(guān)的文件,將那些不必要的代碼過濾掉。

③處理“#include”預(yù)編譯指令,將被包含的文件插入到該預(yù)編譯指令的位置。

(注意:這個(gè)過程可能是遞歸進(jìn)行的,也就是說被包含的文件可能還包含其他文件)

刪除所有的注釋

添加行號(hào)和文件名標(biāo)識(shí)。

以便于編譯時(shí)編譯器產(chǎn)生調(diào)試用的行號(hào)信息及用于編譯時(shí)產(chǎn)生的編譯錯(cuò)誤或警告時(shí)能夠顯示行號(hào)

保留所有的#pragma編譯器指令

2.編譯

將預(yù)處理完的文件進(jìn)行一系列詞法分析、語法分析、語義分析及優(yōu)化后,產(chǎn)生相應(yīng)的匯編代碼文件。

3.匯編

將編譯完的匯編代碼文件翻譯成機(jī)器指令,并生成可重定位目標(biāo)程序的.o文件,該文件為二進(jìn)制文件,字節(jié)編碼是機(jī)器指令。

匯編器是將匯編代碼轉(zhuǎn)變成機(jī)器可以執(zhí)行的指令,每一個(gè)匯編語句幾乎都對(duì)應(yīng)一條機(jī)器指令。所以匯編器的匯編過程相對(duì)于編譯器來講比較簡單,它沒有復(fù)雜的語法,也沒有語義,也不需要做指令優(yōu)化,只是根據(jù)匯編指令和機(jī)器指令的對(duì)照表一一翻譯即可。

4.鏈接

通過鏈接器將一個(gè)個(gè)目標(biāo)文件(或許還會(huì)有庫文件)鏈接在一起生成一個(gè)完整的可執(zhí)行程序。

由匯編程序生成的目標(biāo)文件并不能立即就被執(zhí)行,其中可能還有許多沒有解決的問題。

例如,某個(gè)源文件中的函數(shù)可能引用了另一個(gè)源文件中定義的某個(gè)符號(hào)(如變量或者函數(shù)調(diào)用等);在程序中可能調(diào)用了某個(gè)庫文件中的函數(shù),等等。所有的這些問題,都需要經(jīng)鏈接程序的處理方能得以解決。

鏈接程序的主要工作就是將有關(guān)的目標(biāo)文件彼此相連接,也就是將在一個(gè)文件中引用的符號(hào)同該符號(hào)在另外一個(gè)文件中的定義連接起來,使得所有的這些目標(biāo)文件成為一個(gè)能夠被操作系統(tǒng)裝入執(zhí)行的統(tǒng)一整體。

至此,大致經(jīng)過這幾個(gè)步驟,一個(gè)完整的可執(zhí)行程序產(chǎn)生了。

上一篇:基于C語言實(shí)現(xiàn)簡單的走迷宮游戲

欄    目:C語言

下一篇:C語言實(shí)現(xiàn)選擇排序、冒泡排序和快速排序的代碼示例

本文標(biāo)題:C/C++程序編譯流程詳解

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2376.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有