版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1,主要內(nèi)容: 9.1 宏定義 9.2 文件包含,第九章 編譯預(yù)處理,2,第九章 編譯預(yù)處理,所謂預(yù)處理就是C語言的編譯系統(tǒng)在對程序進(jìn)行通常的編譯之前,先對這些特殊的命令進(jìn)行預(yù)處理,然后將預(yù)處理的結(jié)果和源程序一起再進(jìn)行通常的編譯處理,以得到目標(biāo)代碼。 C 語言的預(yù)處理主要有以下三種: 1. 宏定義 #define 2. 文件包含 #include 3. 條件編譯 #if-#else-#endif等 C的編譯預(yù)處理命令格式: 以“#”開頭 占單獨(dú)書寫行 語句尾不加分號,3,9.1 宏定義,宏定義以#define開頭,當(dāng)程序中多次使用某一常量或某一字符串時,可以使用宏定義以使程序書寫簡單。 如有:
2、 #define M 10在程序中可以用10取代所有的M。 使用宏定義有兩個注意事項:一是宏定義與函數(shù)不同;二是對于帶參的宏,務(wù)必要進(jìn)行宏替換后再分析程序的運(yùn)行結(jié)果。,4,一、不帶參的宏定義,格式: #define 宏名 宏體 宏展開:在預(yù)編譯時將宏名替換成宏體(字符串),這個過程稱為宏展開(宏替換)。 說明:(1)宏名一般用大寫字母表示以便與變量分開, 但不是規(guī)定而只是習(xí)慣。 (2)宏定義不是C語句,末尾不加分號。 (3)程序中雙引號中的宏名不進(jìn)行宏替換。,5,無參的宏定義使用舉例,#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); ,無參宏定義中的宏名M,系統(tǒng)是作為符號常量來處理的,因此可以用來定義數(shù)組。,6,二、帶參數(shù)的宏定義,格式: #define 標(biāo)識符(參數(shù)表) 字符串 說明: (1) 參數(shù)表中的參數(shù)必須為變量,稱為形參。 (2) 帶參的宏定義展開是從左到右依次將實參 字符串代替形參字符串。 (3) 在宏定義時,宏名與帶參的括號之間不應(yīng) 留空格,括號后面一定要留空格。,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)展開時用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)展開時用(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 文件包含,所謂文件包含是指一個源文件可以將另外一個源文件的全部內(nèi)容包含進(jìn)來,使另外的文件成為本文件的一部分。 Turbo C提供了#include命令來實現(xiàn)文件包
6、含操作。 Turbo C提供了大量的庫函數(shù),在用戶使用這些庫函數(shù)之前,應(yīng)當(dāng)使用文件包含命令將相應(yīng)的頭文件包含到當(dāng)前源程序中。,11,一、文件包含的意義,使用文件包含可以避免程序設(shè)計中的重復(fù)勞動。,12,二、文件包含的格式及用法,格式: #include “文件名” #include ,系統(tǒng)到存放c庫函數(shù)頭文件的目錄中尋找要包含的文件,稱為標(biāo)準(zhǔn)方式,系統(tǒng)先到用戶當(dāng)前目錄中尋找要包含的文件,若找不到,再按標(biāo)準(zhǔn)方式找,13,三、文件包含的一些說明,說明: 1. 一個#include命令只能包含一個文件。 2. 一個源程序中可以使用多個#clude命令包含多個文件。 3. 被包含的文件中還可以包含其它文件。,14,三、文件包含的一些說明,file1.c,#include “file2.h”,file2.h,#include “file3.h”,file3.h,同一個文件中可以包含多個文件,file2.h 中后綴.h可以改為.c也可以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 景觀項目合同范本
- 2025年智能機(jī)器人生產(chǎn)線項目可行性研究報告
- 掛畫購買合同范本
- 大學(xué)雙聘合同范本
- 掛靠勞務(wù)合同協(xié)議
- 搬運(yùn)務(wù)工合同范本
- 合同返還協(xié)議模板
- 2025年智慧交通管理系統(tǒng)建設(shè)可行性研究報告
- 2025年網(wǎng)紅經(jīng)濟(jì)營銷方案項目可行性研究報告
- 2025年健康管理及遠(yuǎn)程醫(yī)療服務(wù)項目可行性研究報告
- 支撐梁鋼筋自動計算表模板
- 請結(jié)合材料理論聯(lián)系實際分析如何正確評價人生價值?人生價值的實現(xiàn)需要哪些條件?參考答案
- 生物安全實驗室自查報告及整改措施
- 2026年黨支部主題黨日活動方案
- 夫妻調(diào)解和好協(xié)議書
- 醫(yī)療健康大數(shù)據(jù)的精準(zhǔn)營養(yǎng)方案
- 幼兒園中班交通安全教育課件
- 食堂衛(wèi)生檢查與考核標(biāo)準(zhǔn)建立
- 2025 年國家層面數(shù)據(jù)資產(chǎn)政策匯編(全景解讀版)
- 2025新疆交通投資(集團(tuán))有限責(zé)任公司所屬公司招聘26人筆試歷年典型考點(diǎn)題庫附帶答案詳解2套試卷
- 2025年成本會計考試題及答案6
評論
0/150
提交評論