最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中的編譯與鏈接

 更新時間:2022年01月24日 16:44:14   作者:一個熱愛學習的深度渣渣  
這篇文章主要介紹了C++中的編譯與鏈接,編譯型語言SHI?c++最大的優(yōu)點,相比于Python這種解釋型語言,C++在編譯階段就進行了許多處理,在執(zhí)行階段便具有高效性,下面我們就來詳細講解該內容吧

?前言:

C++有個最大的特點,那便是編譯型語言,相比于Python這種解釋型語言,C++在編譯階段就進行了許多處理,在執(zhí)行階段便具有高效性,本篇主要講解C++中的編譯與鏈接;

一、編譯與鏈接模型

1、一開始的C++是一個簡單的加工模型,如下圖所示:

這樣會存在一些問題:

  • 無法處理大型程序
  • 加工耗時較長
  • 即使少量修改,也需要全部重新加工

2、為了解決以上問題,引入了分塊處理的方式:

編譯鏈接模型的好處:

  • 編譯耗資源但一次處理輸入較少
  • 鏈接輸入較多但處理速度快
  • 便于程序修改(只需修改一部分)

在引入分塊處理后,出現了一些常見概念:

①定義與聲明:一個變量在只需在一個文件中定義,其他文件可通過聲明該變量;

②頭文件與源文件:由于聲明的變量、函數過多,可將聲明放在頭文件中,在源文件中引用頭文件加載這些聲明;

③翻譯單元:源文件 + 相關頭文件(直接/間接)- 應忽略的預處理語句(宏定義不符合條件的);

二、編譯與鏈接流程

下面通過一個實際例子,講解程序如何從cpp一步步到可執(zhí)行文件的;

下圖為一個整體流程圖:

1、預處理階段:將cpp或c的源程序進行處理(頭文件展開等),轉換成以i結尾的翻譯單元文件

g++ -E ./main.cpp -o ./main.i

2、編譯階段:生成編譯后以s為后綴的匯編代碼文件

g++ main.i -S -o main.s

3、匯編階段:將匯編代碼進行匯編生成以o為后綴目標文件

4、鏈接階段:合并多個目標文件,關聯聲明與定義,生成可執(zhí)行程序

以上為系統(tǒng)內部具體的實現操作,我們在實際運行中可以通過一行命令實現編譯鏈接:

g++ ./main.cpp -o ./main

注意點:在用IDE編譯程序時,往往會有兩種模式:Debug和Release,Debug在開發(fā)中使用,優(yōu)化較少,Release在最終程序編譯使用,優(yōu)化較多;

三、總結

  • C++的編譯與鏈接過程是復雜的,預處理、編譯與鏈接都可能出錯,要細心排除;
  • 編譯可能產生警告、錯誤,都要重視;
  • 我個人的感受,會遇到一些很奇怪的坑,不管從環(huán)境還是依賴庫,這就需要有耐心不斷嘗試,并且總結經驗;

到此這篇關于C++中的編譯與鏈接的文章就介紹到這了,更多相關C++ 編譯與鏈接內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • C++面試常見問題整理匯總

    C++面試常見問題整理匯總

    這篇文章主要介紹了C++面試常見問題整理,匯總了C++基本語法、面向對象各種概念與易錯點,需要的朋友可以參考下
    2017-05-05
  • C語言實現打磚塊游戲

    C語言實現打磚塊游戲

    這篇文章主要為大家詳細介紹了C語言實現打磚塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++使用CriticalSection實現線程同步實例

    C++使用CriticalSection實現線程同步實例

    這篇文章主要介紹了C++使用CriticalSection實現線程同步實例,是使用CriticalSection對前文實例的擴展,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C語言入門篇--初識C語言及數據類型

    C語言入門篇--初識C語言及數據類型

    本篇文章是c語言基礎篇,主要為大家介紹了C語言的基本類型,為大家介紹了什么是C語言,希望可以幫助大家快速入門c語言的世界,更好的理解c語言
    2021-08-08
  • VScode搭建OpenCV環(huán)境的詳細步驟

    VScode搭建OpenCV環(huán)境的詳細步驟

    用vscode來寫opencv代碼需要自己編譯OpenCV,主要用到MinGW-w64和CMake工具。接下來通過本文給大家介紹VScode搭建OpenCV環(huán)境的相關知識,需要的朋友可以參考下
    2021-11-11
  • Matlab利用遺傳算法GA求解非連續(xù)函數問題詳解

    Matlab利用遺傳算法GA求解非連續(xù)函數問題詳解

    遺傳算法起源于對生物系統(tǒng)所進行的計算機模擬研究。其本質是一種高效、并行、全局搜索的方法,能在搜索過程中自動獲取和積累有關搜索空間的知識,并自適應地控制搜索過程以求得最佳解。本文將利用其求解非連續(xù)函數問題,需要的可以參考一下
    2022-09-09
  • C++數據結構之單鏈表

    C++數據結構之單鏈表

    這篇文章主要介紹了C++數據結構之單鏈表,鏈表是由一個個結點鏈結成的。結點包括數據域和指針域兩部分,數據域用來存儲數據元素的信息,指針域用來存儲下一個結點的地址,更詳細內容請需要的小伙伴參考下面文章內容
    2022-01-01
  • C語言長字符串的換行方法詳解

    C語言長字符串的換行方法詳解

    在編寫C程序時,如果想要打印某個字符串,而字符串的內容比較多,這就涉及到對這個長字符串進行書寫換行,本片文章就帶你了解一下
    2021-09-09
  • C++實現神經網絡框架SimpleNN的詳細過程

    C++實現神經網絡框架SimpleNN的詳細過程

    本來自己想到用C++實現神經網絡主要是想強化一下編碼能力并入門深度學習,對C++實現神經網絡框架SimpleNN的詳細過程感興趣的朋友一起看看吧
    2021-08-08
  • VC定時器的用法實例詳解

    VC定時器的用法實例詳解

    這篇文章主要介紹了VC定時器的用法,以實例形式詳細講述了VC定時器的原理與具體用法,非常具有實用價值,需要的朋友可以參考下
    2014-10-10

最新評論

安化县| 内黄县| 伊春市| 西乌| 文化| 庐江县| 福建省| 旌德县| 广河县| 调兵山市| 清原| 威远县| 贡嘎县| 赤水市| 新泰市| 伊宁县| 文登市| 吐鲁番市| 栾川县| 循化| 潢川县| 南汇区| 化州市| 北海市| 包头市| 麻栗坡县| 鄂尔多斯市| 柳河县| 米林县| 建德市| 喀什市| 平邑县| 宜良县| 田林县| 宜州市| 建阳市| 若尔盖县| 繁昌县| 青龙| 正安县| 且末县|