




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,主要內(nèi)容: 9.1 宏定義 9.2 文件包含,第九章 編譯預(yù)處理,2,第九章 編譯預(yù)處理,所謂預(yù)處理就是C語(yǔ)言的編譯系統(tǒng)在對(duì)程序進(jìn)行通常的編譯之前,先對(duì)這些特殊的命令進(jìn)行預(yù)處理,然后將預(yù)處理的結(jié)果和源程序一起再進(jìn)行通常的編譯處理,以得到目標(biāo)代碼。 C 語(yǔ)言的預(yù)處理主要有以下三種: 1. 宏定義 #define 2. 文件包含 #include 3. 條件編譯 #if-#else-#endif等 C的編譯預(yù)處理命令格式: 以“#”開頭 占單獨(dú)書寫行 語(yǔ)句尾不加分號(hào),3,9.1 宏定義,宏定義以#define開頭,當(dāng)程序中多次使用某一常量或某一字符串時(shí),可以使用宏定義以使程序書寫簡(jiǎn)單。 如有:
2、 #define M 10在程序中可以用10取代所有的M。 使用宏定義有兩個(gè)注意事項(xiàng):一是宏定義與函數(shù)不同;二是對(duì)于帶參的宏,務(wù)必要進(jìn)行宏替換后再分析程序的運(yùn)行結(jié)果。,4,一、不帶參的宏定義,格式: #define 宏名 宏體 宏展開:在預(yù)編譯時(shí)將宏名替換成宏體(字符串),這個(gè)過(guò)程稱為宏展開(宏替換)。 說(shuō)明:(1)宏名一般用大寫字母表示以便與變量分開, 但不是規(guī)定而只是習(xí)慣。 (2)宏定義不是C語(yǔ)句,末尾不加分號(hào)。 (3)程序中雙引號(hào)中的宏名不進(jìn)行宏替換。,5,無(wú)參的宏定義使用舉例,#define M 10 main( ) int j,aM; for(j=0;jM;j+) aj=j+1; f
3、or(j=0;jM;j+) printf(%6d,aj); ,無(wú)參宏定義中的宏名M,系統(tǒng)是作為符號(hào)常量來(lái)處理的,因此可以用來(lái)定義數(shù)組。,6,二、帶參數(shù)的宏定義,格式: #define 標(biāo)識(shí)符(參數(shù)表) 字符串 說(shuō)明: (1) 參數(shù)表中的參數(shù)必須為變量,稱為形參。 (2) 帶參的宏定義展開是從左到右依次將實(shí)參 字符串代替形參字符串。 (3) 在宏定義時(shí),宏名與帶參的括號(hào)之間不應(yīng) 留空格,括號(hào)后面一定要留空格。,7,帶參的宏定義使用舉例,#define S(x,y) x*y main( ) int a=3,b=4,c=5,d=6; printf(a*b=%dn, S(a,b); printf(a+
4、b*c+d=%dn , S(a+b,c+d); ,a*b);,a+b*c+d ) ) ;,帶參的宏定義在分析程序之前先進(jìn)行宏展開,S(a+b,c+d)展開時(shí)用a+b代替x,用c+d代替y,展開的結(jié)果為:a+b*c+d,8,帶參的宏定義使用舉例,#define S(x,y) x*y main() int a=3,b=4,c=5,d=6; printf(a*b=%dn, S ( a , b ) ) ; printf(a+b*c+d=%dn , S(a+b),(c+d); ,a*b,(a+b)*(c+d) ) ;,帶參的宏定義在分析程序之前先進(jìn)行宏展開,S(a+b),(c+d)展開時(shí)用(a+b)代替
5、x,用(c+d)代替y,展開的結(jié)果為:(a+b)*(c+d),9,帶參的宏定義使用舉例,#define S(x,y) x*y main( ) int a=3,b=4,c=5,d=6;int k; k=S(a+b,c+d)/S(a+b,c+d); printf(%dn ,k); ,S(a+b,c+d)展開結(jié)果為:a+b*c+d/a+b*c+d=3+4*5+6/3+4*5+6=3 + 20 + 2 + 20 +6 = 51,10,9.2 文件包含,所謂文件包含是指一個(gè)源文件可以將另外一個(gè)源文件的全部?jī)?nèi)容包含進(jìn)來(lái),使另外的文件成為本文件的一部分。 Turbo C提供了#include命令來(lái)實(shí)現(xiàn)文件包
6、含操作。 Turbo C提供了大量的庫(kù)函數(shù),在用戶使用這些庫(kù)函數(shù)之前,應(yīng)當(dāng)使用文件包含命令將相應(yīng)的頭文件包含到當(dāng)前源程序中。,11,一、文件包含的意義,使用文件包含可以避免程序設(shè)計(jì)中的重復(fù)勞動(dòng)。,12,二、文件包含的格式及用法,格式: #include “文件名” #include ,系統(tǒng)到存放c庫(kù)函數(shù)頭文件的目錄中尋找要包含的文件,稱為標(biāo)準(zhǔn)方式,系統(tǒng)先到用戶當(dāng)前目錄中尋找要包含的文件,若找不到,再按標(biāo)準(zhǔn)方式找,13,三、文件包含的一些說(shuō)明,說(shuō)明: 1. 一個(gè)#include命令只能包含一個(gè)文件。 2. 一個(gè)源程序中可以使用多個(gè)#clude命令包含多個(gè)文件。 3. 被包含的文件中還可以包含其它文件。,14,三、文件包含的一些說(shuō)明,file1.c,#include “file2.h”,file2.h,#include “file3.h”,file3.h,同一個(gè)文件中可以包含多個(gè)文件,file2.h 中后綴.h可以改為.c也可以
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 晨讀打卡活動(dòng)方案
- 暑期培訓(xùn)快進(jìn)活動(dòng)方案
- 暑假工會(huì)活動(dòng)方案
- 暑期紅色活動(dòng)方案
- 最強(qiáng)巡檢活動(dòng)方案
- 暖冬促銷活動(dòng)方案
- 春節(jié)飲料活動(dòng)方案
- 春節(jié)道路清理活動(dòng)方案
- 服裝互助家園活動(dòng)方案
- 春節(jié)游藝活動(dòng)活動(dòng)方案
- 大學(xué)英語(yǔ)四六級(jí)詞匯表
- 黑龍江省2024年普通高校招生體育類本科批院校專業(yè)組投檔分?jǐn)?shù)線(歷史類)
- 水閘地基施工方案
- 企業(yè)數(shù)字化轉(zhuǎn)型服務(wù)協(xié)議
- 《建立合適邊界:親子教育課件》
- DB37-T 4516-2022 高速公路邊坡光伏發(fā)電工程技術(shù)規(guī)范
- 變電所設(shè)備更換申請(qǐng)報(bào)告
- 2023年遺傳學(xué)考試題庫(kù)(含答案)
- 課題申報(bào)參考:基于多模態(tài)大數(shù)據(jù)的大學(xué)生心理危機(jī)預(yù)警機(jī)制研究
- 《消費(fèi)者行為學(xué)》教學(xué)大綱
- 《礦井扇風(fēng)機(jī)》課件
評(píng)論
0/150
提交評(píng)論