版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章預(yù)處理命令
是在編譯前進(jìn)行的一種編譯預(yù)處理;然后再將處理的結(jié)果,與源程序一起編譯。
本章介紹C語言的三種編譯預(yù)處理命令:#define、
#include和#if。
均以字符“#”開頭,一行只能寫一條,不是C語言的語句,無分號(hào)“;”
。1源文件*.c運(yùn)行文件*.exe編譯編譯編譯目標(biāo)文件*.obj連接編譯連接連接編譯預(yù)處理編譯編譯預(yù)處理包括:
宏定義#define
文件包含#include
條件編譯#if
編譯預(yù)處理2#define
宏名
字符串宏定義的功能:
在進(jìn)行編譯前,用字符串原樣替換程序中的宏名。這個(gè)替換過程稱為“宏替換”或“宏展開”,字符串也稱為替換文本。
命令的一般格式:1不帶參數(shù)的宏定義9.1宏定義#define
例如:#definePI
3.14main(){floatr,s,c;
scanf(“%f”,&r);s=PI*r*r;
printf(“PI=%f,s=%f”,PI,s);}替換3.143.14編譯②為了增加程序的可讀性,建議宏名用大寫字母,其他的標(biāo)識(shí)符用小寫字母。③雙引號(hào)中有與宏名相同的字符串不進(jìn)行替換。④已經(jīng)定義的宏名可以被后定義的宏名引用。在預(yù)處理時(shí)將層層進(jìn)行替換。說明:①宏定義的作用域是從定義處開始到源文件結(jié)束,但根據(jù)需要可用undef命令終止其作用域。形式為:
#undef
宏名源程序:#definePI3.14#defineSPI*r*r#defineV4*S*r/3voidmain(){floatr;
printf("\nInputr:");
scanf("%f",&r);
printf("S=%.2fV=%.2f\n",S,V);}編譯預(yù)處理后的程序:voidmain(){floatr;
printf("\nInputr:");
scanf("%f",&r);
printf("S=%.2fV=%.2f\n",3.14*r*r,4*
3.14*r*r
*r/3);}SVSV進(jìn)入編譯例如:命令的一般形式2帶參數(shù)的宏定義#define宏名(形參表)
字符串功能:
在編譯預(yù)處理時(shí),把源程序中所有帶參數(shù)的宏名用宏定義中的字符串替換,并且用宏名后圓括號(hào)中的實(shí)參替換字符串中的形參。例如:#defineMAX(X,Y)((X)>(Y)?(X):(Y))【例2】帶參數(shù)的宏定義。#defineMAX(x,y)((x)>(y)?(x):(y))voidmain(){…
printf("%d\n",MAX(a,b));
printf("%d\n",MAX(a+m,b+n));}分兩次替換:①將宏名MAX(a,b)
替換成字符串((x)>(y)?(x):(y))。②用實(shí)參a替換形參x,實(shí)參b替換形參y。程序中的兩個(gè)printf語句被展開為:printf("%d\n",((a)>(b)?(a):(b)));printf("%d\n",((a+m)>(b+n)?(a+m):(b+n)));【例3】分析下面程序運(yùn)行后的輸出結(jié)果。#defineMA(x)x*(x-1)voidmain(){inta=1,b=2;
printf("%d\n",MA(1+a+b));}分兩次替換:
①M(fèi)A(1+a+b)
用x*(x-1)
替換。②用1+a+b替換x。printf語句被展開為:printf("%d\n",1+a+b*(1+a+b-1));特別注意:由于替換文本中的x沒有用括號(hào)括起,因此,1+a+b也不能用括號(hào)括起。程序輸出結(jié)果:81).命令的一般形式 格式1:#include<文件名>格式2:#include"文件名"
文件包含是將指定的某個(gè)源文件的內(nèi)容全部包含到當(dāng)前文件中。用include命令實(shí)現(xiàn)。用格式1,預(yù)處理程序僅在編譯系統(tǒng)安裝目錄下查找指定文件。用格式2,預(yù)處理程序首先在當(dāng)前目錄中查找指定文件,若找不到再到系統(tǒng)安裝目錄中查找。9.2包含命令#include
#include<stdio.h>#include“e:\f2.c”Af.c
Bf2.c
CStdio.hAf.c
B
C注意:一行只能包含一個(gè)文件,若要包含多個(gè)文件則要寫多行#include命令!預(yù)處理前:預(yù)處理后的源程序:編譯器對(duì)預(yù)處理后的源程序進(jìn)行編譯。11有一個(gè)名為init.txt的文件,內(nèi)容如下:#defineHDY(A,B)A/B#definePRINT(Y)printf(“y=%d\n”,Y)有以下程序:#include”init.txt”main(){inta=1,b=2,c=3,d=4,k;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ù)合同范例
- 合伙承包廚房合同范例
- 2024年企業(yè)社會(huì)責(zé)任合規(guī)審查合同
- 2024醫(yī)院放射科設(shè)備采購(gòu)合同
- 2024年養(yǎng)牛場(chǎng)貸款融資合同
- 04年塔吊施工安全防護(hù)合同
- 04年智能穿戴設(shè)備OEM委托加工合同
- 汽車維修服務(wù)合同
- 城市公園設(shè)施招投標(biāo)報(bào)名表
- 智能家居照明安裝協(xié)議
- 國(guó)開(甘肅)2024年春《地域文化(專)》形考任務(wù)1-4終考答案
- 公路銑刨機(jī)整機(jī)的設(shè)計(jì)含全套CAD圖紙
- 機(jī)器人學(xué)課程教學(xué)大綱
- 浙江世貿(mào)君瀾酒店集團(tuán)介紹
- GHTF—質(zhì)量管理體系--過程驗(yàn)證指南中文版
- 鋁及鋁合金焊接作業(yè)指導(dǎo)書
- 水利工程質(zhì)量與安全監(jiān)督工作實(shí)務(wù)PPT課件
- 放射性口腔粘膜炎的發(fā)病機(jī)制及危險(xiǎn)因素
- 加油站特殊作業(yè)安全管理制度(完整版)
- 質(zhì)量風(fēng)險(xiǎn)抵押金管理辦法
- 村紀(jì)檢監(jiān)督小組工作職責(zé)
評(píng)論
0/150
提交評(píng)論