外部依賴性在這里(其實很容易被忽略)!但是由它可以看到許多隱藏的東西!
它能說明什么問題?
看右邊程序源代碼中直接使用system("pause");
而學過C語言的小伙伴們應該都曉得,要使用這個函數,必須要引入stdlib.h,即:
#include<stdlib.h>
但是這里為什么不引入,就可以使用了呢?
其實并沒有違背“函數調用時候必須要有函數體的支撐”這個客觀規律。只是它被隱藏了。就在這里:
不感覺奇怪嗎?已經被引入進來了!但是自己并沒有包含它啊,這就是“文件依賴”而導致的結果。
其實寫不同的程序會用到不同的函數,也就需要包含不同的文件。但此時,如果該文件中的代碼又需要其他文件先被加載,就產生了依賴(這在linux中編譯軟件的時候經常看到,那是軟件依賴,因此才有yum安裝軟件方式的出現)
我們先看看不同程序的依賴文件列表:
1:
這里不引入任何文件,所以那個“外部依賴項”目錄是空的。
現在改為:
編譯之后,可以看到依賴目錄里有stdio.h,同時還牽扯出要讓stdio.h里面的代碼正常運行的其他依賴文件。所以有一大堆。
繼續改為:
可見,你手工包含的stdio.h,stdlib.h都被引入了,同時還引入了其他依賴文件。
再改為:
打開之后看:
可見,文件名它可以取.h后綴的,也可以取沒有任何后綴的,都是個文件,它自己打的開就行,同時也是和C語言里面的頭文件區別開來,能一眼就知道是C++特有特性的文件。
可見,雖然你只引入iostream文件,但是它需要其他的依賴文件,這樣就把stdio.h,stdlib.h給引入進來了。
所以你可以直接使用system("pause");
試著打開iostream這個文件:
可見,這個文件里面確實包含了istream,才引進來。
同時可以看到string.h也被包含進來了,就是C語言里面的那種處理字符串的用法。所以后續C++里不想用這個string.h里面的東西了,就需要另外引入string文件,才能使用string類型(因為該string文件沒有被包含進來,所以才要自己包含)。
注意:
由于文件之間的包含和依賴很多很細,還隨機穿插,所以列出了個列表出來方便查看,它其實沒有這個義務的,所以讓你在編譯之后才列出了給你看都已經是好的了,所以要求不要太高。所以:記住在編譯之后再看。如果沒列出了,重新關閉軟件,重新打開編譯程序,就可以看到了。為什么會這樣?因為它只有編譯的時候才知道要依賴什么,而當時已經把相關的代碼拿走放到編譯結果的可執行文件去了,這個軟件的這個地方只是給你個回饋信息,所以滯后甚至不給你列出了給你看,也是可以的。所以如果沒列出了,那就重新關閉軟件,重新編譯運行一下就看到了(反正我測試的時候是這種效果)。
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:通過C++的外部依賴項的感悟-創新互聯
當前地址:http://m.kartarina.com/article32/ccgcsc.html
成都網站建設公司_創新互聯,為您提供網站改版、商城網站、搜索引擎優化、App開發、全網營銷推廣、軟件開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯