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語言的編譯器工作原理 - 天天要聞

科技分類資訊推薦

麒麟9020A+鴻蒙5.0,華為曝光的新機,真刺激啊! - 天天要聞

麒麟9020A+鴻蒙5.0,華為曝光的新機,真刺激啊!

華為這段時間的動作真挺頻繁的,連續發布了多款重磅級別的新品。比如採用新形態設計的華為PuraX,到系統和晶元全部自研的華為鴻蒙PC。而且,華為首款搭載HarmonyOS 5系統的直板手機也即將發布,這就是華為nova14系列。
大廠競相押注的MCP是啥? - 天天要聞

大廠競相押注的MCP是啥?

當地時間2025年2月27日,馬來西亞吉隆坡,阿里巴巴集團雲計算部門開發的Qwen AI大型語言模型(LLM)用戶查詢流程圖在阿里雲AI技術日活動上展示。視覺中國/圖2025年春,AI世界再次開卷新概念。
獲黃仁勛高調推薦的AI搜索引擎 最新估值衝擊千億關口 - 天天要聞

獲黃仁勛高調推薦的AI搜索引擎 最新估值衝擊千億關口

財聯社5月13日訊(編輯 史正丞)據當地媒體報道,美國AI搜索引擎公司Perplexity正接近完成新一輪融資談判,使得公司估值升至近140億美元(約合人民幣1013億元)。知情人士稱,知名風投機構Accel將牽頭本輪融資,預計總額達5億美
蘋果 macOS 15.5 正式發布 - 天天要聞

蘋果 macOS 15.5 正式發布

IT之家 5 月 13 日消息,蘋果今日向 Mac 電腦用戶推送了 macOS 15.5 更新(內部版本號:24F74),本次更新距離上次發布正式版間隔 26 天。 需要注意的是,因蘋果各區域節點伺服器配置緩存問題,可能有些地方探測到升級更新的時間略有延遲,一般半小時內,不會太久。 本文由機器人發布,IT之家稍後將為大家帶來具體更新內容...
106億營收僅4億利潤:燒錢換流量,押注短視頻能否拯救三隻松鼠? - 天天要聞

106億營收僅4億利潤:燒錢換流量,押注短視頻能否拯救三隻松鼠?

2025年4月25日,三隻松鼠正式向港交所遞交招股書,計劃在香港主板實現「A+H」股雙重上市。若此次上市成功,其將成為國內首個跨越滬深港兩地的零食巨頭。2024年財報顯示,三隻松鼠營收達106.22億元,同比增長49.3%,凈利潤同比增長85.5%至4.08億元。這一業績使其穩居中國零食企業零售額第一,但亮眼數據背後,依賴線上渠道、...
權威認證護航出海征程!Intertek 為正泰電源液冷儲能戶外櫃系列產品頒發 ETL、CB、CE等系列證書 - 天天要聞

權威認證護航出海征程!Intertek 為正泰電源液冷儲能戶外櫃系列產品頒發 ETL、CB、CE等系列證書

近日,Intertek天祥集團(以下簡稱「Intertek」)為上海正泰電源系統有限公司(以下簡稱「正泰電源」)研發的CPS ESS-125kW/261kWh 液冷儲能戶外櫃系列產品頒發了 ETL、CB、CE等系列證書,正式標誌著該系列產品可順利進入北美和歐洲市場。 頒證儀式在德國慕尼黑Intersolar展會現場正泰電源展台隆重舉行, 正泰電源總經理李..
廣州積極推動以科技為核心的「華夏社區」項目 - 天天要聞

廣州積極推動以科技為核心的「華夏社區」項目

一、科技賦能社區,保障民生穩定 廣州「華夏社區」項目以科技為核心,融合人工智慧、大數據、物聯網等前沿技術,構建智能化社區管理體系。通過智能安防、智慧醫療、便民服務等功能,提升居民生活質量,確保社區安全穩定。 例如,社區引入智能安防系統,實現全天候監控與預警;智慧醫療平台提供在線診療、健康監測等服務,方...
『敗家變持家』讓我Carry全場的神器,ROG絕神27Pro顯示器評測 - 天天要聞

『敗家變持家』讓我Carry全場的神器,ROG絕神27Pro顯示器評測

哈嘍小夥伴們好,我是Stark-C~對於和我一樣喜歡玩遊戲的玩家來說,在選購顯示器似乎都有這樣的糾結:一方面,我們再玩《CSGO》或者《使命召喚》這類FPS 遊戲時我們希望顯示器不影響我們拔槍的速度,能有超高刷新率和低延遲,這樣畫面就會更加