小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

[VC++入門(mén)]搞了半天我終于知道C++那種頭文件h和源文件cpp到底在搞什么

 成長(zhǎng)中輝煌 2014-08-07

1.

我給你講點(diǎn)兒編譯器的知識(shí)
.h叫做頭文件,它是不能被編譯的?!?include”叫做編譯預(yù)處理指令,可以簡(jiǎn)單理解成,在1.cpp中的#include"1.h"指令把1.h中的代碼在編譯前添加到了1.cpp的頭部。每個(gè).cpp文件會(huì)被編譯,生成一個(gè).obj文件,然后所有的.obj文件鏈接起來(lái)你的可執(zhí)行程序就算生成了。

發(fā)現(xiàn)了沒(méi)有,你要在.h文件中嚴(yán)格區(qū)分聲明語(yǔ)句和定義語(yǔ)句。好的習(xí)慣是,頭文件中應(yīng)只處理常量、變量、函數(shù)以及類(lèi)等等等等的聲明,變量的定義和函數(shù)的實(shí)現(xiàn)等等等等都應(yīng)該在源文件.cpp中進(jìn)行。

至于.h和.cpp具有同樣的主文件名的情況呢,對(duì)編譯器來(lái)講是沒(méi)有什么意義的,編譯器不會(huì)去匹配二者的主文件名,相反它很傻,只認(rèn)#include等語(yǔ)句。但是這樣寫(xiě)是一種約定俗成的編程風(fēng)格,跟樓上說(shuō)的差不多,一個(gè)類(lèi)的名字作為其頭文件和源文件的主文件名比如Class1.h和Class1.cpp,這個(gè)類(lèi)的聲明在Class1.h中,實(shí)現(xiàn)在Class1.cpp中,我們?nèi)祟?lèi)看起來(lái)比較整齊,讀起來(lái)方便,也很有利于模塊化和源代碼的重用。

為什么這個(gè)風(fēng)格會(huì)約定俗成?有一句著名的話,叫“程序是為程序員寫(xiě)的”。

2.

很多人都是從C++轉(zhuǎn)到C#,而我卻正好相反,從C#去學(xué)C++。第一次看那個(gè)東西我就直接用VS建一個(gè)C++項(xiàng)目,但一進(jìn)去就悶了,不知道怎么回事,更本看不懂里面的文件和文件之間到底有什么關(guān)系。今天終于弄明白了一點(diǎn),h文件和cpp文件也就是說(shuō),在h文件中聲明Declare,而在cpp文件中定義Define。要弄明白這個(gè)就只要把聲明和定義搞懂就好了,但是還是不習(xí)慣通常用回車(chē)敲得做法,C++中的智能提示跟C#中的簡(jiǎn)直就是...


  “聲明”向計(jì)算機(jī)介紹名字,它說(shuō),“這個(gè)名字是什么意思”。而“定義”為這個(gè)名字分配存儲(chǔ)空間。無(wú)論涉及到變量時(shí)還是函數(shù)時(shí)含義都一樣。無(wú)論在哪種情況下,編譯器都在“定義”處分配存儲(chǔ)空間。對(duì)于變量,編譯器確定這個(gè)變量占多少存儲(chǔ)單元,并在內(nèi)存中產(chǎn)生存放它們的空間。對(duì)于函數(shù),編譯器產(chǎn)生代碼,并為之分配存儲(chǔ)空間。函數(shù)的存儲(chǔ)空間中有一個(gè)由使用不帶參數(shù)表或帶地址操作符的函數(shù)名產(chǎn)生的指針。定義也可以是聲明。如果該編譯器還沒(méi)有看到過(guò)名字A,程序員定義int A,則編譯器馬上為這個(gè)名字分配存儲(chǔ)地址。聲明常常使用于e x t e r n關(guān)鍵字。如果我們只是聲明變量而不是定義它,則要求使用e x t e r n。對(duì)于函數(shù)聲明, e x t e r n是可選的,不帶函數(shù)體的函數(shù)名連同參數(shù)表或返回值,自動(dòng)地作為一個(gè)聲明。

 

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多