国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
c++ 編譯之頭文件
用makefile 編譯C++程序的時(shí)候,我寫makefile時(shí)有這樣的感受。編寫過程中我的一個(gè).o依賴于一個(gè).cpp文件,.cpp文件所對應(yīng)的.h文件中引用了其他手工編寫的.h文件.這時(shí)按照makefile的編寫規(guī)則,我們是需要依賴于這樣的.h文件。理由是:我們每一個(gè).cpp文件是一個(gè)編譯單元,對于這樣一個(gè)編譯單元,我們依賴于一些聲明。記住我們都只是依賴于一些聲明,當(dāng)這些聲明發(fā)生變化時(shí),我們必須認(rèn)為他依賴的文件已經(jīng)發(fā)生了改變。我們有必要對其進(jìn)行重新編譯。其實(shí)際上我們可以這樣認(rèn)為,只有.cpp才能編譯,.h最后都載入到了cpp中。也就是說.h的文件和.cpp的文件最終都參與了編譯,最終的.h文件都是一些變量的定義和聲明。我們的編譯器首先把.h文件中的全部讀入到.cpp中,然后進(jìn)行編譯,這時(shí)是按照編譯單元來編譯的,就是保證每一個(gè)單元都能正常編譯通過。我們編譯的時(shí)候要建立一個(gè)庫用來記錄每一個(gè)所有變量的定義,到時(shí)候要進(jìn)行鏈接。我們先從main文件開始慢慢進(jìn)行鏈接只要是函數(shù)地址我們就用函數(shù)編譯后的相對地址,如果是變量,我們當(dāng)然要換成變量地址。這樣如果我們有函數(shù)或是變量的地址無法確定(可能是沒有寫函數(shù)的實(shí)現(xiàn),或是有兩種函數(shù)的實(shí)現(xiàn),我們無法確定選那個(gè)來鏈接)就會(huì)出現(xiàn)鏈接錯(cuò)誤。就像我們在一個(gè)頭文件中定義了一個(gè)const類型的整形常量a和一個(gè)int  i類型的整形量。如果我們在幾個(gè).cpp文件中載入了此.h文件。經(jīng)過預(yù)處理后我們進(jìn)行編譯時(shí),在一個(gè)cpp文件中我們遇到一個(gè)變量i我們會(huì)把他登記入庫,并給他地址。我們編譯另一個(gè).cpp之后我們的變量表中可能就會(huì)有兩個(gè)對同一個(gè)變量i的兩個(gè)記錄。到了鏈接階段我們就會(huì)發(fā)現(xiàn)我們無法確定鏈接的地址了。這時(shí)就是一個(gè)鏈接錯(cuò)誤了,呵呵。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
頭文件和源文件的關(guān)系
.h和.c文件的區(qū)別到底是什么(精確講解)
.h和.cpp文件的區(qū)別
C++編譯器與鏈接器工作原理
[yc]詳解link - shifan3 - C 博客
C++全局變量的聲明和定義(轉(zhuǎn))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服