全國計(jì)算機(jī)等級(jí)考試2C課程第10講預(yù)編譯處理課件

上傳人:風(fēng)*** 文檔編號(hào):250753516 上傳時(shí)間:2024-11-04 格式:PPT 頁數(shù):18 大小:134.94KB
收藏 版權(quán)申訴 舉報(bào) 下載
全國計(jì)算機(jī)等級(jí)考試2C課程第10講預(yù)編譯處理課件_第1頁
第1頁 / 共18頁
全國計(jì)算機(jī)等級(jí)考試2C課程第10講預(yù)編譯處理課件_第2頁
第2頁 / 共18頁
全國計(jì)算機(jī)等級(jí)考試2C課程第10講預(yù)編譯處理課件_第3頁
第3頁 / 共18頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《全國計(jì)算機(jī)等級(jí)考試2C課程第10講預(yù)編譯處理課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《全國計(jì)算機(jī)等級(jí)考試2C課程第10講預(yù)編譯處理課件(18頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、,,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,作者:張旭仟 版權(quán)所有 歡迎盜版,*,全國計(jì)算機(jī)等級(jí)考試 2C課程,第十講 編譯預(yù)處理命令,11/4/2024,1,作者:張旭仟 版權(quán)所有 歡迎盜版,全國計(jì)算機(jī)等級(jí)考試 2C課程第十講 編譯預(yù)處理命令9/21/,編譯預(yù)處理命令的基本概念,ANSI C規(guī)定,可以在C源程序中加入一些“編譯預(yù)處理命令” ,以改進(jìn)程序設(shè)計(jì)環(huán)境,提高編程效率。例如:,#define PI 3.14159,#include ,雖然這些“編譯預(yù)處理命令”也是由ANSI C統(tǒng)一規(guī)定的,但它們并非C語言的組成部分。含有這種 “編譯預(yù)處理

2、命令”的源程序,只有在正式編譯之前先對(duì)它們進(jìn)行“預(yù)處理”后,才能被正常編譯成“目標(biāo)程序”。,C語言提供的預(yù)處理命令主要有:,宏定義命令,、,文件包含命令,、,條件編譯命令,。,為了與一般C語句相區(qū)別,這些編譯預(yù)處理命令”都以 “#”號(hào)開頭。,11/4/2024,2,作者:張旭仟 版權(quán)所有 歡迎盜版,編譯預(yù)處理命令的基本概念A(yù)NSI C規(guī)定,可以在C源程序中加,不帶參數(shù)的宏替換命令,不帶參數(shù)的宏替換命令,一般形式:,#define 標(biāo)識(shí)符 字符串,例如:,#define PI 3.1415926,其中“#define”是宏定義命令, PI 稱為“宏名”, “3.1415926”稱為宏體。

3、,作用是將程序中在該命令以后出現(xiàn)的所有的PI都用“3.1415926”代替。,在預(yù)編譯時(shí)將宏名替換成字符串的過程稱為“宏展開”。,11/4/2024,3,作者:張旭仟 版權(quán)所有 歡迎盜版,不帶參數(shù)的宏替換命令不帶參數(shù)的宏替換命令9/21/20233,不帶參數(shù)的宏替換命令,說明:,(1)#define命令、宏名、宏體之間必須用空格隔開;,(2)由于宏定義不是C語言程序語句,行的末尾不需要加“;”號(hào);如果加了分號(hào)則會(huì)作為宏體的一部分被一起置換。,(3)宏名習(xí)慣上一般用大寫字母表示,以便與普通變量名區(qū)別。但這并非語法規(guī)定,即用小寫字母并不屬于語法錯(cuò)誤;,(4)程序中被加上雙引號(hào)“”的宏名,將不能被替

4、換,如:printf(“PI”);語句中的PI不會(huì)被替換為3.1415926;,(5)適當(dāng)使用宏名代替一個(gè)字符串,可以減少程序中重復(fù)書寫某些復(fù)雜數(shù)據(jù)的工作量。,11/4/2024,4,作者:張旭仟 版權(quán)所有 歡迎盜版,不帶參數(shù)的宏替換命令說明:9/21/20234作者:張旭仟,不帶參數(shù)的宏替換命令,例如:,#include ,#define PI 3.1415926,void main(),{ float l,s,r,v;,printf("input radius:");,scanf("%f",,l=2.0*PI*r;,s=PI*r*r;,v=4.0/3*PI*r*r*r;,printf(

5、"l=%10.4f\ns=%10.4f\nv=%10.4f\n",l,s,v);,},運(yùn)行情況如下:,1=25.1328,s=50.2655,v=150.7966,11/4/2024,5,作者:張旭仟 版權(quán)所有 歡迎盜版,不帶參數(shù)的宏替換命令例如: #include

6、ne G 9.8,__,void main(),{ G的有效范圍,…,},__,#undef G,f1(),{,…,},11/4/2024,6,作者:張旭仟 版權(quán)所有 歡迎盜版,不帶參數(shù)的宏替換命令(6) 宏定義是用宏名代替一個(gè)字符串,只,不帶參數(shù)的宏替換命令,(9) 在進(jìn)行宏定義時(shí),可以引用已定義的宏名,宏展開時(shí)將會(huì)層層置換。,例如:,,#include ,#define R 3.0,#define PI 3.1415926,#define L 2*PI*R,#define S PI*R*R,void main(),{ pri

7、ntf("L=%f\nS=%f\n",L,S);,},編譯預(yù)處理時(shí):,printf(“L=%f\nS=%f\n”,L,S); 語句將被展開為,printf(“L=%f\nS=%f\n”,2*3.1415926*3.0,3.1415926*3.0*3.0);,11/4/2024,7,作者:張旭仟 版權(quán)所有 歡迎盜版,不帶參數(shù)的宏替換命令(9) 在進(jìn)行宏定義時(shí),可以引用已定義的,帶參數(shù)的宏定義,帶參數(shù)的宏定義,作用:不只進(jìn)行簡單的字符串替換,還進(jìn)行參數(shù)的替換。,一般形式為:,#define 宏名(參數(shù)表)字符串,,例如:,#define,S(a,b) a*b,,?,area=S(3,2);,說明

8、:,程序中用3和2分別代替宏定義中的形式參數(shù)a和b,用3*2代替,S(3,2),。因此賦值語句展開為:,area=3*2,11/4/2024,8,作者:張旭仟 版權(quán)所有 歡迎盜版,帶參數(shù)的宏定義帶參數(shù)的宏定義例如:說明:9/21/20238,帶參數(shù)的宏定義,對(duì)帶參的宏定義是這樣展開置換的:,對(duì)帶實(shí)參的宏,如S(3,2),基本原則也是按define命令行中指定的字符串從左到右進(jìn)行置換的。,但如果字符串中包含有宏名中定義的形參,如: “a*b”中的a和b,則要用程序中相應(yīng)的實(shí)參(可以是常量、變量或表達(dá)式)來代替;其他字符,如“a*b”中的*號(hào),則原樣保留。,圖中S(3,2)將被置換為3*2,其中3

9、和2是實(shí)參,將代替指定字符串a(chǎn)*b中的a和b,*不是參數(shù),則被原樣保留。,11/4/2024,9,作者:張旭仟 版權(quán)所有 歡迎盜版,帶參數(shù)的宏定義對(duì)帶參的宏定義是這樣展開置換的:圖中S(3,2,帶參數(shù)的宏定義,例如:,#include ,#define PI 3.1415926,#define S(r) PI*r*r,void main(),{ float a,area;,a=3.6;,area=S(a);,printf("r=%f\narea=%f\n",a,area);,},說明:,賦值語句“area=S(a);” 展開后被替換為:,area=3.1415926,*a*a;,運(yùn)行結(jié)果:

10、,r=3.600000,area=40.715038,11/4/2024,10,作者:張旭仟 版權(quán)所有 歡迎盜版,帶參數(shù)的宏定義例如: #include 說,文件包含命令,所謂“文件包含”,是指一個(gè)源文件可以將另外一個(gè)源文件的全部內(nèi)容包括進(jìn)來。,C語言提供了#include命令用來實(shí)現(xiàn)“文件包含”的操作。其一般形式為:,#include "文件名" 或 #include ,說明:,(1)在#include命令中,文件名可以用雙撇號(hào)或尖括號(hào)括起來。,(2)一個(gè)#include命令只能指定一個(gè)被包含文件,如果要包含n個(gè)文件,要用n個(gè)#include命令。,11/4/2024,11,作者:張旭仟

11、版權(quán)所有 歡迎盜版,文件包含命令所謂“文件包含”,是指一個(gè)源文件可以將另外一個(gè)源,文件包含命令,說明:,(3) 在一個(gè)被包含文件中又可以包含另一個(gè)被包含文件,即文件包含是可以嵌套的。如下圖所示,#include ,A,#include ,B,,C,file1.c,file2.c,file3.c,,,C,B,C,11/4/2024,12,作者:張旭仟 版權(quán)所有 歡迎盜版,文件包含命令說明:#include A#i,?,小練習(xí):,1、以下敘述中錯(cuò)誤的是 (2008年4月),A)在程序中凡是以“?!遍_始的語句行都是預(yù)處理命令行,B)預(yù)處理命令行的最后不能以分號(hào)表示結(jié)束,C)#define MAX是合

12、法的宏定義命令行,D)C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的,11/4/2024,13,作者:張旭仟 版權(quán)所有 歡迎盜版,?小練習(xí):1、以下敘述中錯(cuò)誤的是 (2008年4月)9/21,?,小練習(xí):,2、有以下程序(2010年3月),#include ,#define SUB(a) (a)-(a),main(),{ int a=2,b=3,c=5,d;,d=SUB(a+b)*c;,printf("%d\n",d);,},程序運(yùn)行后的輸出結(jié)果是,A)0 B)-12 C)-20 D)10,11/4/2024,14,作者:張旭仟 版權(quán)所有 歡迎盜版,?小練習(xí):2、有以下程序(20

13、10年3月)9/21/2023,?,小練習(xí):,3、有以下程序(2009年9月),#include,#define f(x) x*x*x,main(),{ int a=3,s,t; 3+1*3+1*3+1,s=f(a+1);,t=f((a+1));,printf("%d,%d",s,t);,},程序運(yùn)行后的輸出結(jié)果是,A)10,64 B)10,10 C)64,10 D)64,64,11/4/2024,15,作者:張旭仟 版權(quán)所有 歡迎盜版,?小練習(xí):3、有以下程序(2009年9月)9/21/2023,?,小練習(xí):,4、有以下程序,#include ,#define PT 3.

14、5;,#define S(x) PT*x*x;,mian(),{ int a=1, b=2;,printf(“%4.1f\n”,S(a+b)); 3.5*1+2*1+2,},程序運(yùn)行后輸出的結(jié)果是,A)14.0 B)31.5,C)7.5 D)程序有錯(cuò)無輸出結(jié)果,11/4/2024,16,作者:張旭仟 版權(quán)所有 歡迎盜版,?小練習(xí):4、有以下程序9/21/202316作者:張旭仟,?,小練習(xí):,5、有一個(gè)名為init.txt的文件,內(nèi)容如下:,#define HDY(A,B) A/B,#define PRINT(Y) printf(“y=%d\n”,Y),有以下程序,#include "stdio.h",#include "init.txt",main(),{ int a=1,b=2,c=3,d=4,k;,k=HDY(a+c,b+d);,PRINT(k);,},下面針對(duì)該程序的敘述正確的是(D),A)編譯有錯(cuò) B)運(yùn)行出錯(cuò),C)運(yùn)行結(jié)果為 y=0 D) 運(yùn)行結(jié)果為 y=6,11/4/2024,17,作者:張旭仟 版權(quán)所有 歡迎盜版,?小練習(xí):5、有一個(gè)名為init.txt的文件,內(nèi)容如下:9,,,Thank listen!,11/4/2024,18,作者:張旭仟 版權(quán)所有 歡迎盜版,Thank listen! 9/21/202318作者:張旭,

展開閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  sobing.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!