《08--文件預(yù)處理高級編程》由會員分享,可在線閱讀,更多相關(guān)《08--文件預(yù)處理高級編程(10頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,文件預(yù)處理高級編程,主講:,教學(xué)要點(diǎn),熟練掌握預(yù)編譯的概念,掌握宏定義的方法。,熟練掌握,“,文件包含,”,與預(yù)處理的應(yīng)用。,熟練掌握條件編譯的幾種形式。,編譯預(yù)處理,含義:,編譯預(yù)處理是,C,編譯系統(tǒng)的一個(gè)組成部分。,目的:,將預(yù)處理的結(jié)果和源程序一起再進(jìn)行通常的編譯處理,以得到目標(biāo)代碼。,實(shí)現(xiàn)方法:,通過使用幾種特殊的命令,在進(jìn)行程序的編譯之前,先對這些特殊命令進(jìn)行處理。,主要內(nèi)容:,宏定義,;,文件包含,;
2、,條件編譯,.,宏定義,不帶參數(shù)的宏定義:,含義:用一個(gè)指定的標(biāo)識符來表示一個(gè)字符串。,格式,: #define,標(biāo)識符字符串,其中:“標(biāo)識符”被稱為宏。,作用,:,使用戶能以一個(gè)簡單的名字代替一個(gè)長的字符串。,實(shí)現(xiàn):在預(yù)編譯時(shí)將宏名替換成字符串(宏展開)。,如:,#define PI 3.14159,在程序中將標(biāo)識符,PI,代替為“,3.1415”,這個(gè)字符串。,宏高級編程,宏名一般都用大寫字母表示,以區(qū)別于變量,;,宏定義只是用宏名替代一個(gè)字符串,減少了在程序中書寫某些字符串的工作量,只是一個(gè)簡單的代替,不作語法檢查,;,宏定義不是語句,不必再其后加上,“,;,”,;,#define,命令
3、出現(xiàn)在函數(shù)的外面,它的有效范圍是定義之后到本源文件的結(jié)束,;,可以使用,#undef,命令終止宏定義的有效范圍,;,在宏定義中可以進(jìn)行多層的替代,.,#define R3.0,#define PI3.1415,#define L2*PI*R,#define SPI*R*R,main()printf(,“,L=%fnS=%fn,”,L,S);,帶參數(shù)的宏,帶參數(shù)的宏定義,定義:,#define,宏名,(,參數(shù)表,),字符串,例如:,#define s(a,b)a*b,.,area=s(3,2);,作用:,不只是進(jìn)行簡單的字符串替換,還要進(jìn)行參數(shù)的置換。,參數(shù)宏高級編程,對于帶參數(shù)的宏的展開依就是
4、用實(shí)際參數(shù)代替宏定義時(shí)的形式參數(shù),;,請注意與函數(shù)的調(diào)用存在差別。,在宏定義時(shí),宏名與帶參數(shù)的括號之間不應(yīng)加空格,不然的話,空格也作為字符的組成部分,在宏代換時(shí),不應(yīng)人為地加上括號,.,文件包含,將一個(gè)源文件的內(nèi)容完全包含在另一個(gè)文件之中,.,一般形式:,#include “,文件名”(或,),功能:可以節(jié)省程序設(shè)計(jì)人員的重復(fù)勞動,缺點(diǎn):有可能導(dǎo)致重復(fù)包含,文件包含高級編程,一個(gè),#include,命令只能指定一個(gè)被包含的文件,若要包含,n,個(gè)文件,應(yīng)使用,n,個(gè),#include,命令;,若文件,1,包含文件,2,,而文件,2,中要用到文件,3,的內(nèi)容,則可在文件,1,中用,2,個(gè),#inc
5、lude,命令分別包含文件2和文件3,而且文件3應(yīng)出現(xiàn)在文件2之前,如下表示:,file1.c,#include,“,file3.h,”,#include,“,file2.h,”,.,文件包含可以嵌套。,“”,與,在,#include,中的不同:,使用,“”,時(shí),系統(tǒng)若在源程序文件目錄中找不到被包含的文件,則將按系統(tǒng)指定的標(biāo)準(zhǔn)方式檢索其他目錄;,使用,時(shí),系統(tǒng)只按指定的標(biāo)準(zhǔn)方式檢索其他目錄;,預(yù)編譯后的包含文件和源程序文件成為一個(gè)文件,所有的,extern,變量將成為源程序文件中的全局靜態(tài)變量。,條件編譯,引入條件編譯的原因:,只對源程序中滿足條件的部分內(nèi)容進(jìn)行編譯。,可以減少被編譯的語句,從而減少目標(biāo)程序的長度。,定義形式:,方式,1,:,#ifdef,標(biāo)識符,程序段,1,#else,程序段,2,#endif,