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

分享

頭文件問題:iostream與iostream.h的區(qū)別

 冉亮 2010-07-16

經(jīng)常在CSDN以及其他之類的技術(shù)論壇上問關(guān)于C++ 頭文件的問題,。提出這些問題的往往就是那些剛學(xué)C++的新手,。當(dāng)初我是菜鳥的時候也問過類似的問題.

     現(xiàn)在來看看下面兩個include:

     #include<iostream>      // 這個就是1998年標(biāo)準(zhǔn)化以后的標(biāo)準(zhǔn)頭文件

     #include<iostream.h>        // 這個就是標(biāo)準(zhǔn)化以前的頭文件

     更本質(zhì)上的區(qū)別就是iostream把標(biāo)準(zhǔn)C++庫的組件放在一個名位std的namespace里面。而相對的iostream.h則將這些標(biāo)準(zhǔn)組件放在全局空間里,,同時在標(biāo)準(zhǔn)化以后舊有的C標(biāo)準(zhǔn)庫也已經(jīng)經(jīng)過改造了,。使用前者,就需要在代碼中添加語句:using namespace std;

     看看下面這兩個頭文件

     // 標(biāo)準(zhǔn)化后經(jīng)過改造的C的標(biāo)準(zhǔn)庫,,所有的組件都放在了std中

     #include<cstdio>           

     // 標(biāo)準(zhǔn)化以前C++中的C標(biāo)準(zhǔn)庫

     #include<stdio.h>

     // 在看看這個頭文件C標(biāo)準(zhǔn)庫下 基于char* 的字符處理函數(shù)庫

     #include<string.h>

     // 在標(biāo)準(zhǔn)化以后他變成了這樣

     #include<cstring>

     // 但是很多朋友還看見過這個字符串處理函數(shù)庫,,他包含了新的string class

     #include<string>

     經(jīng)過了標(biāo)準(zhǔn)委員會如此大規(guī)模手術(shù)后,在98年以前出品的C++編譯器(BC3.0,,BC5.0)上能順利通過編譯的源文件,,在支持新標(biāo)準(zhǔn)的編譯器上可能無法順利通過編譯也就是很正常的事了。

[起因]

     在回過頭來看看標(biāo)準(zhǔn)程序庫,,這個程序庫涵蓋范圍相當(dāng)廣大,,提過了許許多多好用的功能。正是因為這樣標(biāo)準(zhǔn)程序庫中class的名稱和函數(shù)名與第三方提供的程序庫中的class名或是函數(shù)名發(fā)生名字沖突的可能性大大增大,。為了避免這個問題的發(fā)生,,標(biāo)準(zhǔn)委員會決定將標(biāo)準(zhǔn)程序庫中每一樣?xùn)|西都放在namespace std中。但是這么做同時有引來了一個新的問題,。很多C++程序代碼依賴那些已經(jīng)存在很多年的C++ “準(zhǔn)”標(biāo)準(zhǔn)程序庫(C++遲遲未標(biāo)準(zhǔn)化才導(dǎo)致這些情況的發(fā)生),,例如iosteam.h,complex.h等等,。

     為了解決這個新出現(xiàn)的問題,標(biāo)準(zhǔn)化委員會決定設(shè)計一些新的頭文件名,,給那些穿上std外衣的組件所使用,。把C++頭文件的.h去掉,于是就有前面出現(xiàn)的iostream,,同樣C的頭文件也做了相同的處理,,同時在前面加上了一個字母c,以表示是C的頭文件(感覺上有中種族歧視的感覺),。同時標(biāo)準(zhǔn)化委員會聲明就有的C++頭文件將不再列于被支持的名單之中了,,而舊有的C頭文件為了滿足“對C的兼容性”這個古老契約,仍然將繼續(xù)存活下去,。

但是,,那些編譯器廠商不可能去推翻他們客戶的舊有編譯器(也跟本不會去這么做),所以那些舊有的C++頭文件仍然茍延殘喘的活了下來,,并不斷的擾亂那些C++新兵的心智,。

     下面就是現(xiàn)在大多數(shù)C++開發(fā)工具表示頭文件的組織狀態(tài):

1.     舊的C++頭文件比如iostream.h,他們雖然被標(biāo)準(zhǔn)化委員會所拋棄,,但由于各大廠商為了各自的商業(yè)利益仍然將繼續(xù)存活下去,,這些頭文件的內(nèi)容將不處于namespace std中。

2.     新的C++頭文件如iostream雖然提供了和舊有頭文件相同的功能,,但他的內(nèi)容都并入了namespace std中,,從而有效避免了名字污染的問題。

3.     標(biāo)準(zhǔn)C的頭文件如stdio.h繼續(xù)獲得支持,,這類文件的內(nèi)容并未放在std中,。

4.     C函數(shù)庫的技能也有對應(yīng)的新式C++版本,起名稱類似cstdio,,這類頭文件的內(nèi)容也有幸穿上了std的外衣,。

其實標(biāo)準(zhǔn)化以后的標(biāo)準(zhǔn)程序庫的改動并不只有這些而已,很多的標(biāo)準(zhǔn)化組件都被“tamplate化”,。其中就有元老級人物iostream,。標(biāo)準(zhǔn)程序庫的問題并不是用一篇,兩篇文章就可以說清楚的,。如果你像進(jìn)一步的了解C++的標(biāo)準(zhǔn)程序庫的話,,你可以看看侯先生的《C++標(biāo)準(zhǔn)程序庫》。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多