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

科技分類資訊推薦

百年碼頭「轉身」數字高地 陸家嘴數智港揭牌 打造互聯網經濟新引擎 - 天天要聞

百年碼頭「轉身」數字高地 陸家嘴數智港揭牌 打造互聯網經濟新引擎

IT時報記者 郝俊慧沿浦東濱江大道北行,行至浦江下游,抬眼便見楊浦大橋橫卧江面連接兩岸。這裡,曾是上海百年碼頭的繁忙之地,如今正蛻變為互聯網經濟產業高地。6月16日,陸家嘴數智港正式揭牌成立。這一戰略性平台的設立,是積極落實浦東新區今年2月發佈的《關於促進互聯網平台經濟健康發展的若干意見》的關鍵舉措,由陸...
來自硅谷的AI寫作黑科技LingoLeap有哪些強大功能? - 天天要聞

來自硅谷的AI寫作黑科技LingoLeap有哪些強大功能?

在托福、雅思備考圈中,一款名為 Lingoleap 的AI寫作與口語批改工具正被越來越多考生使用,因其「逐句點評、高分改寫、反饋及時」而被用戶稱為「AI寫作老師」。記者近日採訪發現,該工具正在留學培訓機構、高校考生和自學群體中悄然流行,並受到「AI+教育」政策背景的進一步推動。 南京某高校學生小孫分享說,Lingoleap讓她...
電商刷單查實!「10.5萬+」爆款是假的 - 天天要聞

電商刷單查實!「10.5萬+」爆款是假的

「已搶10.5萬+件」在某電商平台商品展示頁面一款領夾麥克風正在「瘋搶中」然而商品評價只有404條數據異常懸殊背後究竟藏着怎樣的貓膩?(圖片來源:海淀區市場監管局)近日北京市海淀區市場監管局披露了一起網絡經營者虛構交易量的違法案件記者了解到,為獲取真實交易數據,執法人員向電商平台所在地市場監管部門發函協查,...
有關部門回應多地「國補」暫停;蜂鳥音樂要求鄧紫棋重製版歌曲全網下架;791名中國公民安全撤離伊朗;央行將在上海設立個人徵信機構 - 天天要聞

有關部門回應多地「國補」暫停;蜂鳥音樂要求鄧紫棋重製版歌曲全網下架;791名中國公民安全撤離伊朗;央行將在上海設立個人徵信機構

特別關注有關部門回應多地「國補」暫停近期,多地傳出以舊換新「國補」暫停或者調整的消息。對此,國家相關主管部門就「國補」下一步計劃回應稱,今年國家安排3000億元超長期特別國債資金支持消費品以舊換新,目前已向地方下達了共計1620億元資金,剩餘資金將有序下達。2025年的消費品以舊換新政策將全年實施,有關部門正指...
吉利第四代博越L,為何成爆款?底盤、動力、智能全面解析 - 天天要聞

吉利第四代博越L,為何成爆款?底盤、動力、智能全面解析

隨着新能源車型的崛起,燃油車型看似熱度不再,其實留意銷量排行榜,就會發現一些經典的燃油車依舊長期位居前列,近期上市的第四代博越L無疑是其中之一。博越作為200萬用戶的選擇,新一代車型上市後迅速登上熱搜,引起熱議,這款車究竟有何魔力?我們通過底盤、動力、空間、智
快遞服務質效持續提升 - 天天要聞

快遞服務質效持續提升

工人在河北省固安縣申通快遞華北轉運中心工作。 新華社記者 王 曉攝國家郵政局數據顯示,今年1月至5月,我國快遞業務量累計完成787.7億件,同比增長20.1%。市場規模實現較快增長的同時,快遞服務質效也持續提升。眼下,正值荔枝、水蜜桃等時令鮮果上市,快遞企業綜合發力提升時效。在廣東省茂名市荔枝主產區,中通快遞設置...