




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 預(yù)處理命令,1 .掌握編譯預(yù)處理的概念和特點(diǎn); 2.掌握不帶參數(shù)的宏定義及其使用, 了解帶參數(shù)的宏定義及其使用。 3.掌握“文件包含”的概念和使用; 4.了解條件編譯的作用和形式。,8.1 編譯預(yù)處理命令,一、編譯預(yù)處理的概念,C語(yǔ)言允許在程序中使用幾種特殊的命令,在C編譯系統(tǒng)對(duì)程序進(jìn)行通常的編譯之前,先對(duì)程序中這些特殊命令進(jìn)行“預(yù)處理”,然后將預(yù)處理的結(jié)果和源程序一起再進(jìn)行通常的編譯處理,以得到目標(biāo)代碼。,二、主要預(yù)處理功能,宏定義 ; 文件包含; 條件編譯,一、不帶參數(shù)的宏定義及宏替換,8.2 宏定義,宏名,宏內(nèi)容,無(wú)分號(hào),引例:,#define PI 3.1415926 main
2、() float l,s,r,v; printf(“請(qǐng)輸入半徑 :”); scanf(“%f”, ,注意:,宏名一般習(xí)慣用大寫(xiě)字母; 宏名用做代替一個(gè)字符串,不作語(yǔ)法檢查; 宏定義無(wú)需“;” 宏定義的有效范圍為,從定義之處到: #undef命令終止 若無(wú)#undef命令,則有效范圍到本文結(jié)束;,#undef 標(biāo)識(shí)符, 位置: 允許出現(xiàn)在程序中函數(shù)外的任意位置 但一般情況下它總寫(xiě)在文件的開(kāi)頭。 在進(jìn)行宏定義時(shí),可以引用已定義的宏名;例,#define PI 3.1415926 #define R 3.0 #define L 2*PI*R #define S PI*R*R,第一次替換:printf
3、(l=%f ns=%fn, 2*PI*R, PI*R*R);,main( ) printf(l=%f ns=%fn,L,S); ,二:printf(l=%f ns=%fn, 2*3.1415926*3.0, 3.1415926*3.0*3.0);,宏替換(宏展開(kāi)) :用宏內(nèi)容(字符串)原樣替換 程序中的所有宏名字的過(guò)程。,二、帶參數(shù)的宏定義及宏替換,#define 宏名(宏形參數(shù)表) 字符串,#define PI 3.1415926 #define S(r) PI*r*r main( ) float r1=3.6, area; area= S(r1); printf(r=%f area=%fn
4、,r1,area); ,用PI*r1*r1替換,#define PF(x) x*x /*#define PF(x) (x)*(x) */ /*#define PF(x) (x)*(x) */ main() int a=2, b=3, c; c=PF(a+b)/PF(a+1); printf(nc=%d ,c); ,按第一種宏定義:c=a+b*a+b/a+1*a+1;,按第二種宏定義:c=(a+b)*(a+b)/(a+1)*(a+1);,按第三種宏定義:c=(a+b)*(a+b)/(a+1)*(a+1);,注意替換時(shí)不求值, 只是字符串的原樣替換,*三、帶參數(shù)的宏替換與函數(shù)的主要區(qū)別,函數(shù)調(diào)用時(shí)
5、,先求出實(shí)參的值,然后代入形參。 而使用帶參的宏只是進(jìn)行簡(jiǎn)單的字符替換。,函數(shù)調(diào)用是在程序運(yùn)行時(shí)處理的,而宏替換則是在編譯時(shí)進(jìn)行的。,函數(shù)中函數(shù)名及參數(shù)均有一定的數(shù)據(jù)類型,而宏 不存在類型問(wèn)題,宏名及其參數(shù)無(wú)類型。,宏替換不占運(yùn)行時(shí)間,只占編譯時(shí)間,而函數(shù)調(diào) 用則占運(yùn)行時(shí)間。,#define MAX(x,y) xy?x:y main( ) int n1,n2; float f1,f2; scanf(%d%d%f%f, ,程序舉例:,經(jīng)預(yù)編譯宏替換后的printf語(yǔ)句如下:,printf(maxi=%dmaxf=%f,n1n2?n1:n2, f1f2?f1:f2);,9.2 “文件包含”處理,一
6、般形式為:,#include “文件名”,先在當(dāng)前工作目錄中去查找,若找不到再到指定的標(biāo)準(zhǔn)目錄中去查找。,如:對(duì)Turbo C編譯系統(tǒng),先在用戶目錄下 查找,然后在TCinclude文件夾中查找。,#include ,直接到系統(tǒng)指定的標(biāo)準(zhǔn)目錄中去查找。,如:對(duì)Turbo C編譯系統(tǒng),直接在TCinclude 文件夾中查找。,9.3 條件編譯,一、使用宏定義的標(biāo)識(shí)符作為編譯條件,作用:當(dāng)所指定的標(biāo)識(shí)符已經(jīng)被#define 命令定義過(guò),則在程序編譯階段只編譯程序段1,否則編譯程序段2。,作用:當(dāng)所指定的標(biāo)識(shí)符已經(jīng)被#define 命令定義過(guò),則在程序編譯階段只編譯程序段1,,作用:當(dāng)所指定的標(biāo)識(shí)符
7、未被#define 命令定義過(guò),則在程序編譯階段只編譯程序段1,否則編譯程序段2。,例1: #ifdef TURBO #define int int #else #define int short #endif,可用于實(shí)現(xiàn)程序在不同環(huán)境下的兼容性。,例2: #ifdef DEBUG printf(“x=%d,y=%dn”,x,y); #endif,可用于進(jìn)行程序的調(diào)試。,調(diào)試過(guò)程中,在程序前面加#define DEBUG 調(diào)試完成后,將前面的#define DEBUG刪除掉,二、使用常量表達(dá)式的值作為編譯條件,作用:當(dāng)所指定的表達(dá)式為真(非零)時(shí)就編譯程序段1,否則編譯程序段2。,可以事先給定一定條件,使程序在不同的條件下執(zhí)行不同的功能。,程序舉例:用同一程序?qū)崿F(xiàn)大小寫(xiě)字母轉(zhuǎn)換(若定義UP轉(zhuǎn)換為大寫(xiě)),#include stdio.h #define UP main(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 無(wú)線基站維護(hù)培訓(xùn)課件
- 抖音商戶短視頻創(chuàng)意提案評(píng)審制度
- BWA-6047-生命科學(xué)試劑-MCE
- 江蘇省興化市顧莊區(qū)三校2024-2025學(xué)年七上數(shù)學(xué)期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 美發(fā)培訓(xùn)卷杠課件
- 國(guó)際多式聯(lián)運(yùn)操作規(guī)范與風(fēng)險(xiǎn)管理
- 航空行業(yè)三年發(fā)展報(bào)告:國(guó)際與國(guó)內(nèi)市場(chǎng)的比較研究
- 2024-2025學(xué)年浙江省杭州市濱江區(qū)數(shù)學(xué)七年級(jí)第一學(xué)期期末調(diào)研試題含解析
- 云南司法警官職業(yè)學(xué)院《國(guó)畫(huà)山水》2023-2024學(xué)年第一學(xué)期期末試卷
- 河道垃圾清理管理辦法
- 七十歲以上老年人換本考駕照三力測(cè)試題含答案
- 2026年版廣西高等職業(yè)教育考試(新職教高考)新聞傳播大類《攝影攝像》模擬試卷(第1套)
- 2025年度分布式光伏項(xiàng)目居間代理服務(wù)合同
- 《輸血相容性檢測(cè)設(shè)備性能驗(yàn)證技術(shù)規(guī)范》
- 2024魯科版五四制六年級(jí)生物上冊(cè)全冊(cè)知識(shí)點(diǎn)(填空版+背誦版)
- 混齡分組教學(xué)活動(dòng)設(shè)計(jì)
- 債權(quán)轉(zhuǎn)讓協(xié)議書(shū)范文范本下載電子版
- 代理記賬業(yè)務(wù)內(nèi)部規(guī)范(三篇)
- 會(huì)計(jì)師事務(wù)所職業(yè)道德規(guī)章制度
- 蘇教版二年級(jí)下冊(cè)混合計(jì)算題200道及答案
- 外研版(2021)中職英語(yǔ)基礎(chǔ)模塊1 Unit 6 Not Just Tasty For Better Performance,Around the world 教案
評(píng)論
0/150
提交評(píng)論