文件包含
文件包含預(yù)處理命令(簡稱文件包含命令)實現(xiàn)將指定文件的內(nèi)容作為當(dāng)前源程序的一部分。文件包含預(yù)處理命令的一般形式為
# include “文件名”。
或
# include<文件名>
文件包含命令為組裝大程序和程序文件復(fù)用提供了一種手段。在編寫程序時,習(xí)慣將公共的常量定義、數(shù)據(jù)類型定義和全局變量的外部說明構(gòu)成一個源文件。稱這類沒有執(zhí)行代碼的文件為頭文件,并以“.h”為文件名的后綴。其它程序文件凡要用到頭文件中定義或說明的程序?qū)ο髸r,就用文件包含命令使它成為自己的一部分。這樣編程的好處是各程序文件使用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)和常量,能保證程序的一致性,也便于修改程序。頭文件如同標(biāo)準(zhǔn)零件一樣被其它程序文件使用,減少了重復(fù)定義的工作量。
條件編譯
條件編譯是指在編譯一個源程序文件時,其中部分代碼段能根據(jù)條件成立與否有選擇地被編譯。即編譯程序只編譯沒有條件或條件成立的代碼段,而不編譯不滿足條件的代碼段。
條件編譯為組裝與環(huán)境有關(guān)的大程序提供有力的支持,能提高程序的可移植性和可維護(hù)性。通常在研制程序系統(tǒng)時,設(shè)計者將所有與環(huán)境有關(guān)的內(nèi)容編寫成獨立的程序段,并將它們配上相應(yīng)的條件編譯命令。因環(huán)境不同等原因,只要設(shè)定相應(yīng)條件,就能組裝出適應(yīng)環(huán)境要求的新程序。
條件編譯命令主要有三種相似的形式。
(1) #if 表達(dá)式
程序段1
# else
程序段2
# endif
其中表達(dá)式為常量表達(dá)式,其意義是當(dāng)指定的表達(dá)式值為非零時,程序段1參與編譯,程序段2不參與編譯;否則,反之。
這種形式的條件編譯命令使預(yù)處理程序能根據(jù)給定的條件確定哪個程序段參與編譯,哪個程序段不參與編譯。
在上述一般形式中,當(dāng)程序段2不出現(xiàn)時,也可簡寫為
#if 表達(dá)式
程序段
# endif
條件編譯與if語句有重要區(qū)別:條件編譯是在預(yù)處理時判定的,不產(chǎn)生判定代碼,其中一個不滿足條件的程序段不參與編譯,不會產(chǎn)生代碼;且語句是在運行時判定的,且編譯產(chǎn)生判
定代碼和兩個分支程序段的代碼。因此,條件編譯可減少目標(biāo)程序長度,能提高程序執(zhí)行速度。但條件編譯只能測試常值或常量表達(dá)式,而且語句能對表達(dá)式作動態(tài)測試。
條件編譯預(yù)處理命令也可呈嵌套結(jié)構(gòu)。特別是為了便于描述# else后的程序段又是條件編譯情況,引人須處理命令符# elif。它的意思就是# else #if。所以條件編譯須處理命令更一般的形式為
相關(guān)推薦:計算機(jī)軟考程序員備考:程序設(shè)計知識點匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |