久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

c++ 編譯之頭文件

 liujt 2005-10-20
用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ò)誤了,,呵呵,。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多