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

科技分類資訊推薦

微軟預告 Copilot Avatar,用戶可自由設計 AI 形象外觀 - 天天要聞

微軟預告 Copilot Avatar,用戶可自由設計 AI 形象外觀

IT之家 4 月 5 日消息,微軟在 50 周年活動上宣布,將推出可自定義形象的 AI 助手功能「Copilot Avatar」。用戶可為 Copilot 設計專屬虛擬形象,該形象會在對話時通過表情增強互動體驗。微軟近日踏入《黑鏡》式科幻領域,宣布為 AI 助手 Copilot 開發虛擬形象定製功能。在 50 周年活動上,該公司透露「Copilot Avat
微軟推出 Copilot Pages / Deep Research:AI 自動整理研究筆記 - 天天要聞

微軟推出 Copilot Pages / Deep Research:AI 自動整理研究筆記

IT之家 4 月 5 日消息,微軟在成立 50 周年之際,為 AI 助手 Copilot 推出兩項新功能 ——Deep Research(深度研究)和 Pages(頁面)。前者可自動化多步驟研究任務,後者能將筆記、研究內容整合為草稿。Pages 功能可將用戶提供的筆記、網頁內容等素材自動整理成結構化草稿,並支持持續修改與對話交互。IT之家附上演示視頻...
微軟 Copilot 變身「AI 管家」:一句話搞定訂票購物 - 天天要聞

微軟 Copilot 變身「AI 管家」:一句話搞定訂票購物

IT之家 4 月 5 日消息,微軟公司在 50 周年慶典活動中,宣布推出 Copilot Actions 功能,AI 智能體代表用戶自主執行任務,實現預訂電影票、餐廳、航班及購物等。用戶只需通過對話指令,即可讓 AI 代訂電影票、音樂會門票、餐廳座位,甚至安排酒店和航班。此外,Copilot 還能根據需求為用戶或親友購買禮物。該功能目前已與 ...
微軟 Bing 重大革新:Copilot Search 上線,AI 與傳統搜索結合 - 天天要聞

微軟 Bing 重大革新:Copilot Search 上線,AI 與傳統搜索結合

IT之家 4 月 5 日消息,為了慶祝其 50 周年紀念日,微軟剛剛宣布了 Copilot 的幾個新功能。這些 AI 工具將在未來幾個月內逐步推出,但一些升級功能已經可用。今天宣布的有趣功能之一是 Bing 搜索引擎的 Copilot Search。該工具將傳統網絡搜索與生成式搜索結果相結合。IT之家從微軟博客獲悉,微軟聲稱這一功能「改變了網絡搜...
微軟 50 周年現神操作:AI 主持人幽默調侃三任 CEO - 天天要聞

微軟 50 周年現神操作:AI 主持人幽默調侃三任 CEO

IT之家 4 月 5 日消息,微軟現任首席執行官(CEO)薩提亞・納德拉(Satya Nadella)昨日(4 月 4 日)通過官方 X 賬號,發佈一段 Copilot AI 採訪微軟三任 CEO 的趣味視頻。Copilot 以幽默方式「吐槽」了鮑爾默的熱情、蓋茨的思考表情和納德拉對 AI 的痴迷。IT之家附上相關視頻如下: 視頻中,Copilot 人工智能
國產內存要漲價了 漲幅最高5% - 天天要聞

國產內存要漲價了 漲幅最高5%

2024年底,中國長鑫存儲、福建晉華在DDR4內存市場動作頻頻。一方面,它們積極擴大產能;另一方面,瘋狂殺價,其DDR4內存價格比三大廠便宜足足50%,甚至比二手芯片還要便宜。這一舉措直接讓美日和中國台灣一眾廠商陷入困境。被逼無奈之下,三星、SK海力士、美光甚至決定在今年底停產DDR4。如今,初戰告捷的中國內存廠商在掌...
微信上線新功能 斗圖更方便了 - 天天要聞

微信上線新功能 斗圖更方便了

本周,鴻蒙版微信迎來重要升級,涵蓋深色模式、分享文件到微信、消息撤回後支持重新編輯和發送等功能。同時,據微信派發佈的消息,微信引用回復功能也有所更新。如今不僅能引用表情包和語音進行回復,回復內容也不再局限於文字,語音和表情包均可作為回復形式。此外,在表情包合併轉發方面存在不同情況。若使用iPhone手機分...
曝iPhone 17 Pro升級長焦 終於放棄1200萬像素 - 天天要聞

曝iPhone 17 Pro升級長焦 終於放棄1200萬像素

目前,iPhone 16 Pro和iPhone 16 Pro Max的主攝與超廣角都已升級至4800萬像素,然而長焦端仍是1200萬像素,支持5倍光學變焦。但據博主爆料,iPhone 17 Pro系列將迎來重大變革,其長焦鏡頭會升級為全新的4800萬像素。相比1200萬像素,4800萬像素的解析力更佳,並且支持7倍光學品質級變焦,這也使得iPhone 17