C/C+編程筆記:C語言的編譯器工作原理

2020年12月07日23:40:10 科技 1738

以gcc編譯器為例子,編譯實際上總共經歷了四個階段

預處理--->編譯--->彙編--->鏈接

C/C+編程筆記:C語言的編譯器工作原理 - 天天要聞

1.預處理階段:編譯器以cpp文件作為一個單元,首先讀這個cpp文件,發現第一句與第二句包含一個頭文件,就會在所有搜索路徑中尋找這兩個頭文件,找到之後,就會到相應頭文件中再去處理宏、變量、函數聲明、嵌套的頭文件等。

檢測依賴關係,進行宏替換,看是否有重複定義與聲明的情況發生,最後將那些文件中所有的東東全部掃描進這個當前的cpp文件中,形成一個中間"cpp文件"。

在這一步中相當於將那個頭文件中的test變量掃描進了一個中間cpp文件,那麼test變量就變成了這個文件中的一個全局變量。在stdio.h這個頭文件中有一些函數的聲明,這時也把這些函數的聲明一股腦的掃描到了這個中間cpp文件中(只是掃描了函數的聲明,並沒有實現)。

C/C+編程筆記:C語言的編譯器工作原理 - 天天要聞

2.編譯階段:此時就為這個中間cpp文件的所有變量、函數形參分配空間(原則上,在這裡只能看到.h文件中函數、變量的聲明,為變量和函數的形參等分配空間),將各個函數編譯成二進制碼,按照特定目標文件格式生成目標文件。

在這種格式的目標文件中進行各個全局變量、函數的符號描述(編譯器維護一個符號描述表),將這些二進制碼按照一定的標準組織成一個目標文件。

C/C+編程筆記:C語言的編譯器工作原理 - 天天要聞

此時的每一個cpp文件都被編譯器編譯成了一個目標文件,同時每個目標文件都有一張符號表,這張符號表中記錄了這個cpp文件都用到了哪些變量,哪些函數,函數的參數是什麼類型的,有幾個參數。

同時為變量和函數形參開闢了內存空間。所以這裡編譯器把你這個cpp用到的所有的東西都記錄下來了,如果有重複定義或者沒有定義的變量、函數等,編譯器一下子就知道了。

3.連接階段:將上一步成生的各個目標文件,根據一些參數,連接生成最終的可執行文件,主要的工作就是重定位各個目標文件的函數、變量等,相當於將個目標文件中的二進制碼按一定的規範合到一個文件中。

C/C+編程筆記:C語言的編譯器工作原理 - 天天要聞

科技分類資訊推薦

最新消息!她已離職!曾凌晨發文道歉 - 天天要聞

最新消息!她已離職!曾凌晨發文道歉

本月初,百度副總裁璩靜在短視頻平台上發佈的幾條出鏡視頻引髮網友關注,特別是其提到「員工鬧分手提離職我秒批」等職場話題引髮網友質疑,一度登上微博熱搜。
淘寶取消「618」預售機制後,京東宣布「現貨開賣」 - 天天要聞

淘寶取消「618」預售機制後,京東宣布「現貨開賣」

繼5月7日天貓宣布取消「618」預售機制後,5月8日,京東也正式宣布「現貨開賣」。今年京東618將於5月31日晚8點全面開啟。據了解,現貨開賣的同時,京東還將同步推出百億補貼日活動。在6月2日、6月3日、6月8日,還將先後推出9.
細思極恐網絡暴力和群毆 - 天天要聞

細思極恐網絡暴力和群毆

互聯網高速發展利用時代踏實做事和說實話的人都不被人待見,時時刻刻遭受網絡暴力,聲討,群毆,格力電器董明珠,踏踏實實做企業,創稅收,促進就業,,為國家為人民奉獻大半輩子青春,心血, 汗水,本該退休安享晚年,侍弄兒孫遺憾找不到合適放心接班人,七
探秘vivo影像之美,與X系列技術溝通會共同見證卓越藍圖 - 天天要聞

探秘vivo影像之美,與X系列技術溝通會共同見證卓越藍圖

前段時間的vivo X系列新品發佈讓我們記憶深刻,而剛剛結束結束的「影像新藍圖X系列技術溝通會」也十分精彩,這次溝通會不僅告訴了大家vivo在影像領域的最新成果,也讓粉絲們對vivo影像背後的故事有更多了解,在vivo影像的發展歷程中可以分成兩方面,一方面,vivo通過自主研發,不斷提升自身的影像技術實力,另一方面,vivo...
華為再次亮劍,鴻蒙系統亮點多多 - 天天要聞

華為再次亮劍,鴻蒙系統亮點多多

5月15日,華為夏季全場景新品發佈會簡直是一場視覺與科技的盛宴,看得我熱血沸騰!不得不說,華為這次真的是大招頻出,新品多到讓人眼花繚亂!先說說那個華為MatePad 11.5 」 S吧,一亮相就讓人眼前一亮!它的設計簡約而不失時尚,屏幕清晰得讓人彷彿置身其中。
【新機】升級了個寂寞?藍廠新機發佈 - 天天要聞

【新機】升級了個寂寞?藍廠新機發佈

昨天晚上藍廠發佈了新機iQOO Neo9s Pro,機子採用了6.78英寸1.5K 8T LTPO直面屏,支持144Hz刷新率。搭載天璣9300+,前置1600萬像素,後置IMX920主攝+5000萬超廣角。電池容量5160mAh,支持120W快充。新增白色版本,用上了白色玻璃後蓋,顏值確實提升了不少。不過還是塑料中框+短焦指紋。12+256GB 2699元
AI Agent在哪些行業領域會產生影響? - 天天要聞

AI Agent在哪些行業領域會產生影響?

在如今飛速前進的科技浪潮中,人工智能(AI)技術的創新正以前所未有的速度重塑我們的生活和工作的每一個角落。在這一浪潮中,Agent AI智能體以其卓越的能力脫穎而出,它通過模擬人類智能行為,能夠勝任一系列複雜任務,並在多個領域展現出了其無法替代的價值。