C語言教案 第九章編譯預(yù)處理新_第1頁
C語言教案 第九章編譯預(yù)處理新_第2頁
C語言教案 第九章編譯預(yù)處理新_第3頁
C語言教案 第九章編譯預(yù)處理新_第4頁
C語言教案 第九章編譯預(yù)處理新_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、1,主要內(nèi)容: 9.1 宏定義 9.2 文件包含,第九章 編譯預(yù)處理,2,第九章 編譯預(yù)處理,所謂預(yù)處理就是C語言的編譯系統(tǒng)在對程序進行通常的編譯之前,先對這些特殊的命令進行預(yù)處理,然后將預(yù)處理的結(jié)果和源程序一起再進行通常的編譯處理,以得到目標(biāo)代碼。 C 語言的預(yù)處理主要有以下三種: 1. 宏定義 #define 2. 文件包含 #include 3. 條件編譯 #if-#else-#endif等 C的編譯預(yù)處理命令格式: 以“#”開頭 占單獨書寫行 語句尾不加分號,3,9.1 宏定義,宏定義以#define開頭,當(dāng)程序中多次使用某一常量或某一字符串時,可以使用宏定義以使程序書寫簡單。 如有:

2、 #define M 10在程序中可以用10取代所有的M。 使用宏定義有兩個注意事項:一是宏定義與函數(shù)不同;二是對于帶參的宏,務(wù)必要進行宏替換后再分析程序的運行結(jié)果。,4,一、不帶參的宏定義,格式: #define 宏名 宏體 宏展開:在預(yù)編譯時將宏名替換成宏體(字符串),這個過程稱為宏展開(宏替換)。 說明:(1)宏名一般用大寫字母表示以便與變量分開, 但不是規(guī)定而只是習(xí)慣。 (2)宏定義不是C語句,末尾不加分號。 (3)程序中雙引號中的宏名不進行宏替換。,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 ) ) ;,帶參的宏定義在分析程序之前先進行宏展開,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) ) ;,帶參的宏定義在分析程序之前先進行宏展開,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)容包含進來,使另外的文件成為本文件的一部分。 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論