C語(yǔ)言程序設(shè)計(jì)(第四版)(微課版)ch09 編譯預(yù)處理_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)(第四版)(微課版)ch09 編譯預(yù)處理_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)(第四版)(微課版)ch09 編譯預(yù)處理_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)(第四版)(微課版)ch09 編譯預(yù)處理_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)(第四版)(微課版)ch09 編譯預(yù)處理_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

9.1概述9.2宏定義9.3文件包含9.4條件編譯9.1概述9.1.1預(yù)處理的工作方式作用:對(duì)源程序編譯之前,對(duì)#開頭的命令做一些預(yù)處理9.1.2預(yù)處理命令種類:宏定義#define文件包含#include條件編譯#if--#else--#endif等9.2宏定義如if(x==YES)printf(“correct!\n”);elseif(x==NO)printf(“error!\n”);展開后:if(x==1)printf(“correct!\n”);elseif(x==0)printf(“error!\n”);不帶參數(shù)宏定義一般形式:#define宏名宏體功能:用指定標(biāo)識(shí)符(宏名)代替字符序列(宏體)宏名中不允許有空格,而且必須遵循C變量命名規(guī)則。宏名一般用大寫字母。宏展開:預(yù)編譯時(shí),用宏體替換宏名---不作語(yǔ)法檢查如#defineYES1#defineNO0#definePI3.1415926#defineOUTprintf(“Hello,World”);定義位置:一般在程序開頭作用域:從定義命令到文件結(jié)束#undef可終止宏名作用域格式:

#undef宏名例#defineYES1main(){……..}#undefYES

#defineYES0max(){……..}宏定義可嵌套,不能遞歸例#defineMAXMAX+10(

)引號(hào)中的內(nèi)容與宏名相同不需置換例#definePI3.14159printf(“2*PI=%f\n”,PI*2);宏展開:printf(“2*PI=%f\n”,3.14159*2);宏定義中使用必要的括號(hào)()例#defineWIDTH80#defineLENGTH

WIDTH+40var=LENGTH*2;宏展開:var=80+40*2;(

)(

)例#defineWIDTH80#defineLENGTH

WIDTH+40var=LENGTH*2;宏展開:var=80+40*2;帶參數(shù)宏定義一般形式:#define宏名(參數(shù)表)宏體宏展開:形參用實(shí)參置換,其它字符保留宏體及各形參外一般應(yīng)加括號(hào)()例#defineS(a,b)a*b………..area=S(3,2);宏展開:area=3*2;例#definePOWER(x)x*xx=4;y=6;z=POWER(x+y);宏展開:z=x+y*x+y;一般寫成:#definePOWER(x)((x)*(x))宏展開:z=((x+y)*(x+y));#defineMAX(x,y)(x)>(y)?(x):(y)…….main(){inta,b,c,d,t;…….t=MAX(a+b,c+d);……}宏展開:t=(a+b)>(c+d)?(a+b):(c+d);【例9.2】編程,利用帶參數(shù)的宏完成比較兩個(gè)數(shù)的大小。9.3文件包含功能:一個(gè)源文件可將另一個(gè)源文件的內(nèi)容全部包含一般形式:#include“文件名”

或#include<文件名>#include“file2.c”file1.cfile2.cfile1.cfile2.cABA<>直接按標(biāo)準(zhǔn)目錄搜索

先在當(dāng)前目錄搜索,再搜索標(biāo)準(zhǔn)目錄文件包含可嵌套#include“file2.c”file1.cAfile3.cC#include“file3.c”file2.cBfile1.cAfile3.cfile2.c例文件包含舉例#include<stdio.h>#defineN8#include"fun.c"intmain(){ printf("%ld\n",fac(N));}/*fun.c*/longintfac(intn){ inti; longints=1; for(i=1;i<=n;i++) s*=i; returns;}9.4條件編譯功能:根據(jù)指定的標(biāo)識(shí)符是否被定義過(guò),確定在程序編譯階段編譯哪一段程序段。

形式1:#if

表達(dá)式

程序段1

#else

程序段2

#endif

形式2:#ifdef

標(biāo)識(shí)符

程序段1

#else

程序段2

#endif

形式3:#ifndef

標(biāo)識(shí)符

程序段1

#else

程序段2

#endif

例:在調(diào)試程序時(shí),常常希望輸出一些所需的信息,而在調(diào)試完成后不再輸出這些信息,可在源程序中插入以下的條件編譯段:

#ifdefDEBUGprintf(”x=%d,y=%d,z=%d\n”,x,y,z);#endif#defineLETTER

1/*將1改為0,以大寫輸出*/main(){charstr[20]="CLanguage",c;

inti;

i=0

while((c=str[i])!=′\0′){i++;

#ifLETTER

if(c>=′a′&&c<=′Z′)c=

溫馨提示

  • 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ù)覽,若沒有圖紙預(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)論