編寫自己的C語言頭文件.doc

編寫自己的C語言頭文件.doc

ID:53232177

大小:16.32 KB

頁數(shù):4頁

時(shí)間:2020-04-02

編寫自己的C語言頭文件.doc_第1頁
編寫自己的C語言頭文件.doc_第2頁
編寫自己的C語言頭文件.doc_第3頁
編寫自己的C語言頭文件.doc_第4頁
資源描述:

《編寫自己的C語言頭文件.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、1.頭文件用于聲明而不是用于定義當(dāng)設(shè)計(jì)頭文件時(shí),記住定義和聲明的區(qū)別是很重要的。定義只可以出現(xiàn)一次,而聲明則可以出現(xiàn)多次(2.3.5節(jié))。下列語句是一些定義,所以不應(yīng)該放在頭文件里:externintival=10;????//initializer,soit'sadefinitiondoublefica_rate;??????????//noextern,soit'sadefinition雖然ival聲明為extern,但是它有初始化式,代表這條語句是一個(gè)定義。類似地,fica_rate的聲明雖然沒有初始化式,但也是

2、一個(gè)定義,因?yàn)闆]有關(guān)鍵字extern。同一個(gè)程序中有兩個(gè)以上文件含有上述任一個(gè)定義都會(huì)導(dǎo)致多重定義鏈接錯(cuò)誤。?因?yàn)轭^文件包含在多個(gè)源文件中,所以不應(yīng)該含有變量或函數(shù)的定義。對(duì)于頭文件不應(yīng)該含有定義這一規(guī)則,有三個(gè)例外。頭文件可以定義類、值在編譯時(shí)就已知道的const對(duì)象和inline函數(shù)(7.6節(jié)介紹inline函數(shù))。這些實(shí)體可在多個(gè)源文件中定義,只要每個(gè)源文件中的定義是相同的。在頭文件中定義這些實(shí)體,是因?yàn)榫幾g器需要它們的定義(不只是聲明)來產(chǎn)生代碼。例如:為了產(chǎn)生能定義或使用類的對(duì)象的代碼,編譯器需要知道組成該類

3、型的數(shù)據(jù)成員。同樣還需要知道能夠在這些對(duì)象上執(zhí)行的操作。類定義提供所需要的信息。在頭文件中定義const對(duì)象則需要更多的解釋。2.一些const對(duì)象定義在頭文件中回想一下,const變量(2.4節(jié))默認(rèn)為定義該變量的文件的局部變量。正如我們現(xiàn)在所看到的,這種默認(rèn)的原因在于允許const變量定義在頭文件中。在C++中,有些地方需要放置常量表達(dá)式(2.7節(jié))。例如,枚舉成員的初始化式必須是常量表達(dá)式。在以后的章節(jié)中將會(huì)看到其他需要常量表達(dá)式的例子。一般來說,常量表達(dá)式是編譯器在編譯時(shí)就能夠計(jì)算出結(jié)果的表達(dá)式。當(dāng)const整

4、型變量通過常量表達(dá)式自我初始化時(shí),這個(gè)const整型變量就可能是常量表達(dá)式。而const變量要成為常量表達(dá)式,初始化式必須為編譯器可見。為了能夠讓多個(gè)文件使用相同的常量值,const變量和它的初始化式必須是每個(gè)文件都可見的。而要使初始化式可見,一般都把這樣的const變量定義在頭文件中。那樣的話,無論該const變量何時(shí)使用,編譯器都能夠看見其初始化式。但是,C++中的任何變量都只能定義一次(2.3.5小節(jié))。定義會(huì)分配存儲(chǔ)空間,而所有對(duì)該變量的使用都關(guān)聯(lián)到同一存儲(chǔ)空間。因?yàn)閏onst對(duì)象默認(rèn)為定義它的文件的局部變量,

5、所以把它們的定義放在頭文件中是合法的。這種行為有一個(gè)很重要的含義:當(dāng)我們?cè)陬^文件中定義了const變量后,每個(gè)包含該頭文件的源文件都有了自己的const變量,其名稱和值都一樣。當(dāng)該const變量是用常量表達(dá)式初始化時(shí),可以保證所有的變量都有相同的值。但是在實(shí)踐中,大部分的編譯器在編譯時(shí)都會(huì)用相應(yīng)的常量表達(dá)式替換這些const變量的任何使用。所以,在實(shí)踐中不會(huì)有任何存儲(chǔ)空間用于存儲(chǔ)用常量表達(dá)式初始化的const變量。如果const變量不是用常量表達(dá)式初始化,那么它就不應(yīng)該在頭文件中定義。相反,和其他的變量一樣,該cons

6、t變量應(yīng)該在一個(gè)源文件中定義并初始化。應(yīng)在頭文件中為它添加extern聲明,以使其能被多個(gè)文件共享。習(xí)題??????????????????????????????????????????????????????????????習(xí)題2.31?判別下列語句哪些是聲明,哪些是定義,請(qǐng)解釋原因。??(a)externintix=1024;??(b)intiy;??(c)externintiz;??(d)externconstint&ri;習(xí)題2.32?下列聲明和定義哪些應(yīng)該放在頭文件中?哪些應(yīng)該放在源文件中?并解釋原因。??

7、(a)intvar;??(b)constdoublepi=3.1416;??(c)externinttotal=255;??(d)constdoublesq2=squt(2.0)習(xí)題2.33?確定你的編譯器提供了哪些提高警告級(jí)別的選項(xiàng)。使用這些選項(xiàng)重新編譯以前選擇的程序,察看是否會(huì)報(bào)告新的問題。2.9.2?預(yù)處理器的簡單介紹既然已經(jīng)知道了什么應(yīng)該放在頭文件中,那么我們下一個(gè)問題就是真正地編寫頭文件。我們知道要使用頭文件,必須在源文件中#include該頭文件。為了編寫頭文件,我們需要進(jìn)一步理解#include指示是怎樣

8、工作的。#include設(shè)施是C++預(yù)處理器(preprocessor)的一部分。預(yù)處理器處理程序的源代碼,在編譯器之前運(yùn)行。C++繼承了C的非常精細(xì)的預(yù)處理器?,F(xiàn)在的C++程序以高度受限的方式使用預(yù)處理器。#include指示只接受一個(gè)參數(shù):頭文件名。預(yù)處理器用指定的頭文件的內(nèi)容替代每個(gè)#include。我們自己的頭文件存儲(chǔ)在文

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。