通過C++的外部依賴項(xiàng)的感悟

外部依賴性在這里(其實(shí)很容易被忽略)!但是由它可以看到許多隱藏的東西!

創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元喀喇沁做網(wǎng)站,已為上家服務(wù),為喀喇沁各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

它能說明什么問題?

看右邊程序源代碼中直接使用system("pause");

而學(xué)過C語言的小伙伴們應(yīng)該都曉得,要使用這個(gè)函數(shù),必須要引入stdlib.h,即:

#include<stdlib.h>

但是這里為什么不引入,就可以使用了呢?

其實(shí)并沒有違背“函數(shù)調(diào)用時(shí)候必須要有函數(shù)體的支撐”這個(gè)客觀規(guī)律。只是它被隱藏了。就在這里:

不感覺奇怪嗎?已經(jīng)被引入進(jìn)來了!但是自己并沒有包含它啊,這就是“文件依賴”而導(dǎo)致的結(jié)果。

其實(shí)寫不同的程序會(huì)用到不同的函數(shù),也就需要包含不同的文件。但此時(shí),如果該文件中的代碼又需要其他文件先被加載,就產(chǎn)生了依賴(這在linux中編譯軟件的時(shí)候經(jīng)??吹?,那是軟件依賴,因此才有yum安裝軟件方式的出現(xiàn))

我們先看看不同程序的依賴文件列表:

1:

這里不引入任何文件,所以那個(gè)“外部依賴項(xiàng)”目錄是空的。

現(xiàn)在改為:

編譯之后,可以看到依賴目錄里有stdio.h,同時(shí)還牽扯出要讓stdio.h里面的代碼正常運(yùn)行的其他依賴文件。所以有一大堆。

繼續(xù)改為:

可見,你手工包含的stdio.h,stdlib.h都被引入了,同時(shí)還引入了其他依賴文件。

再改為:

打開之后看:

可見,文件名它可以取.h后綴的,也可以取沒有任何后綴的,都是個(gè)文件,它自己打的開就行,同時(shí)也是和C語言里面的頭文件區(qū)別開來,能一眼就知道是C++特有特性的文件。

可見,雖然你只引入iostream文件,但是它需要其他的依賴文件,這樣就把stdio.h,stdlib.h給引入進(jìn)來了。

所以你可以直接使用system("pause");

試著打開iostream這個(gè)文件:

可見,這個(gè)文件里面確實(shí)包含了istream,才引進(jìn)來。

同時(shí)可以看到string.h也被包含進(jìn)來了,就是C語言里面的那種處理字符串的用法。所以后續(xù)C++里不想用這個(gè)string.h里面的東西了,就需要另外引入string文件,才能使用string類型(因?yàn)樵搒tring文件沒有被包含進(jìn)來,所以才要自己包含)。

注意:

由于文件之間的包含和依賴很多很細(xì),還隨機(jī)穿插,所以列出了個(gè)列表出來方便查看,它其實(shí)沒有這個(gè)義務(wù)的,所以讓你在編譯之后才列出了給你看都已經(jīng)是好的了,所以要求不要太高。所以:記住在編譯之后再看。如果沒列出了,重新關(guān)閉軟件,重新打開編譯程序,就可以看到了。為什么會(huì)這樣?因?yàn)樗挥芯幾g的時(shí)候才知道要依賴什么,而當(dāng)時(shí)已經(jīng)把相關(guān)的代碼拿走放到編譯結(jié)果的可執(zhí)行文件去了,這個(gè)軟件的這個(gè)地方只是給你個(gè)回饋信息,所以滯后甚至不給你列出了給你看,也是可以的。所以如果沒列出了,那就重新關(guān)閉軟件,重新編譯運(yùn)行一下就看到了(反正我測(cè)試的時(shí)候是這種效果)。

分享標(biāo)題:通過C++的外部依賴項(xiàng)的感悟
轉(zhuǎn)載來源:http://muchs.cn/article12/ipihdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)電子商務(wù)、搜索引擎優(yōu)化、微信公眾號(hào)、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化