《C程序設(shè)計(jì)》(第三版)第9章-預(yù)處理命令_第1頁
《C程序設(shè)計(jì)》(第三版)第9章-預(yù)處理命令_第2頁
《C程序設(shè)計(jì)》(第三版)第9章-預(yù)處理命令_第3頁
《C程序設(shè)計(jì)》(第三版)第9章-預(yù)處理命令_第4頁
《C程序設(shè)計(jì)》(第三版)第9章-預(yù)處理命令_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論