




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4/30/2022精選ppt1編譯預(yù)處理:編譯預(yù)處理:在源程序文件中,加入在源程序文件中,加入“編譯預(yù)處理命令編譯預(yù)處理命令”,使編譯程序在對(duì),使編譯程序在對(duì)源程序進(jìn)行通常的編譯(包括詞法分析、語(yǔ)法分析、代碼生成、代碼優(yōu)源程序進(jìn)行通常的編譯(包括詞法分析、語(yǔ)法分析、代碼生成、代碼優(yōu)化)之前,先對(duì)這些命令進(jìn)行預(yù)處理,然后將預(yù)處理的結(jié)果和源程序一化)之前,先對(duì)這些命令進(jìn)行預(yù)處理,然后將預(yù)處理的結(jié)果和源程序一起再進(jìn)行通常的編譯處理,以得到目標(biāo)代碼(起再進(jìn)行通常的編譯處理,以得到目標(biāo)代碼(OBJ文件)。文件)。C提供的編譯預(yù)處理命令提供的編譯預(yù)處理命令宏命令(宏命令(Macro)文件包含命令(文件包含
2、命令(include)條件編譯命令條件編譯命令這些命令均以這些命令均以#開(kāi)頭,以區(qū)別于語(yǔ)句。開(kāi)頭,以區(qū)別于語(yǔ)句。4/30/2022精選ppt2一、不帶參數(shù)的宏一、不帶參數(shù)的宏一般形式:一般形式: #define 標(biāo)識(shí)符標(biāo)識(shí)符 字符串字符串如:如: #define PI 3.1415926作用:用標(biāo)識(shí)符(稱為作用:用標(biāo)識(shí)符(稱為“宏名宏名”)PI代替字符串代替字符串“3.1415926”。在預(yù)編譯時(shí),將源程序中出現(xiàn)的宏名在預(yù)編譯時(shí),將源程序中出現(xiàn)的宏名PI替換為字符串替換為字符串“3.1415926”,這一替換過(guò)程稱為這一替換過(guò)程稱為“宏展開(kāi)宏展開(kāi)”。#define:宏定義命令:宏定義命令#un
3、def:終止宏定義命令:終止宏定義命令4/30/2022精選ppt3例例PI 3.1415926 main()float l,s,r,v; printf(input radius:);scanf(%f,&r); /* 輸入圓的半徑輸入圓的半徑 */l = 2.0*PI*r; /* 圓周長(zhǎng)圓周長(zhǎng) */ s = PI*r*r; /* 圓面積圓面積 */v = 4.0/3.0*PI*r*r*r; /* 球體積球體積 */printf(l=%10.4fns=%10.4fnv=%10.4fn,l,s,v);4/30/2022精選ppt4關(guān)于宏定義的說(shuō)明關(guān)于宏定義的說(shuō)明:1、一般宏名用大寫字母表示
4、。(變量名一般用小寫字母)。、一般宏名用大寫字母表示。(變量名一般用小寫字母)。2、使用宏可以提高程序的可讀性和可移植性。如上述程序中,多處、使用宏可以提高程序的可讀性和可移植性。如上述程序中,多處需要使用需要使用值,用宏名既便于修改又意義明確。值,用宏名既便于修改又意義明確。3、宏定義是用宏名代替、宏定義是用宏名代替字符串字符串,宏擴(kuò)展時(shí)僅作簡(jiǎn)單替換,不檢查語(yǔ),宏擴(kuò)展時(shí)僅作簡(jiǎn)單替換,不檢查語(yǔ)法。語(yǔ)法檢查在編譯時(shí)進(jìn)行。法。語(yǔ)法檢查在編譯時(shí)進(jìn)行。4、宏定義不是、宏定義不是C語(yǔ)句,后面不能有分號(hào)。如果加入分號(hào),則連分號(hào)語(yǔ)句,后面不能有分號(hào)。如果加入分號(hào),則連分號(hào)一起替換。一起替換。如:如:#def
5、ine PI 3.1415926;area = P*r*r;在宏擴(kuò)展后成為:在宏擴(kuò)展后成為:area = 3.1315926;*r*r;結(jié)果,在編譯時(shí)出現(xiàn)語(yǔ)法錯(cuò)誤。結(jié)果,在編譯時(shí)出現(xiàn)語(yǔ)法錯(cuò)誤。4/30/2022精選ppt55、通常把、通常把#define命令放在一個(gè)文件的開(kāi)頭,使其在本文件全部有命令放在一個(gè)文件的開(kāi)頭,使其在本文件全部有效。(效。(#define定義的宏僅在本文件有效,在其它文件中無(wú)效,定義的宏僅在本文件有效,在其它文件中無(wú)效,這與全局變量不同)。這與全局變量不同)。6、宏定義終止命令、宏定義終止命令 #undef結(jié)束先前定義的宏名。結(jié)束先前定義的宏名。#define G 9.
6、8main() #undef G /* 取消取消G的意義的意義 */f1() 4/30/2022精選ppt67、宏定義中可以引用已定義的宏名。、宏定義中可以引用已定義的宏名。例例8.2 #define R 3.0#define PI 3.1415926#deinfe L 2*PI*R #define S PI*R*Rmain()printf(L=%fnS=%fn,L,S); 8、對(duì)程序中用雙引號(hào)括起來(lái)的字符串,即使與宏名相同,也不替換。、對(duì)程序中用雙引號(hào)括起來(lái)的字符串,即使與宏名相同,也不替換。例如上例的例如上例的printf語(yǔ)句中,雙引號(hào)括起來(lái)語(yǔ)句中,雙引號(hào)括起來(lái)L和和S不被替換。不被替換。
7、4/30/2022精選ppt7二、帶參數(shù)的宏二、帶參數(shù)的宏一般形式:一般形式:#define 宏名(參數(shù)表)宏名(參數(shù)表) 字符串字符串帶參數(shù)的宏在展開(kāi)時(shí),不是進(jìn)行簡(jiǎn)單的字符串替換,而是進(jìn)行參數(shù)帶參數(shù)的宏在展開(kāi)時(shí),不是進(jìn)行簡(jiǎn)單的字符串替換,而是進(jìn)行參數(shù)替換。例、替換。例、4/30/2022精選ppt8例例#define PI 3.1415926#define S(r) PI*r*rmain() float a, area; a = 3.6; area = S(a); printf(r=%fnarea=%fn,a,area);說(shuō)明:說(shuō)明: 帶參數(shù)的宏展開(kāi)時(shí),用實(shí)參字符串替換形參字符串,注意可能發(fā)
8、帶參數(shù)的宏展開(kāi)時(shí),用實(shí)參字符串替換形參字符串,注意可能發(fā)生的錯(cuò)誤。比較好的辦法是宏定義的形參加括號(hào)。生的錯(cuò)誤。比較好的辦法是宏定義的形參加括號(hào)。4/30/2022精選ppt94/30/2022精選ppt10例例 返回多個(gè)值的宏定義。返回多個(gè)值的宏定義。#define PI 3.1415926#define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4/3*PI*R*R*R main() float r,l,s,v; /*半徑、圓周長(zhǎng)、圓面積、球體積半徑、圓周長(zhǎng)、圓面積、球體積 */scanf(%f,&r);CIRCLE(r,l,s,v); printf(r
9、=%6.2f,l=%6.2f,s=%6.2f,v=%6.2fn,r,l,s,v);輸出結(jié)果輸出結(jié)果:4/30/2022精選ppt11文件包含命令的一般格式是:文件包含命令的一般格式是:#include “文件名文件名”作用:預(yù)處理時(shí),把作用:預(yù)處理時(shí),把“文件名文件名”指定的文件內(nèi)容復(fù)制到本文件,再對(duì)合并后指定的文件內(nèi)容復(fù)制到本文件,再對(duì)合并后的文件進(jìn)行編譯。的文件進(jìn)行編譯。例、例、4/30/2022精選ppt12在文件中,有文件包含命令在文件中,有文件包含命令#include ,預(yù)處理時(shí),先把的內(nèi)容復(fù),預(yù)處理時(shí),先把的內(nèi)容復(fù)制到文件,再對(duì)進(jìn)行編譯。制到文件,再對(duì)進(jìn)行編譯。從理論上說(shuō),從理論上
10、說(shuō),#include命令可以包含任何類型的文件,只要這些文命令可以包含任何類型的文件,只要這些文件的內(nèi)容被擴(kuò)展后符合件的內(nèi)容被擴(kuò)展后符合C語(yǔ)言語(yǔ)法。語(yǔ)言語(yǔ)法。一般一般#include命令用于包含擴(kuò)展名為命令用于包含擴(kuò)展名為.h的的“頭文件頭文件”,如,如stdio.h、string.h、math.h。在這些文件中,一般定義符號(hào)常量、宏,或。在這些文件中,一般定義符號(hào)常量、宏,或聲明函數(shù)原型。聲明函數(shù)原型。(2)文件)文件#include print_format.h“main() int a,b,c,d;char string = CHINA;a = 1; b = 2; c = 3; d =
11、4;PR(D1,a);PR(D2,a,b); PR(D3,a,b,c);PR(D4,a,b,c,d);PR(S,string);程序員也可以把自己定義的符號(hào)常程序員也可以把自己定義的符號(hào)常量、宏,或函數(shù)原型放在頭文件中,量、宏,或函數(shù)原型放在頭文件中,用用#include命令包含這些頭文件。命令包含這些頭文件。(1)文件)文件print_format.h#define PR printf#define NL n#define D %d #define D1 D NL#define D2 D D NL#define D3 D D D NL#define D4 D D D D NL#define
12、S %s4/30/2022精選ppt13說(shuō)明:說(shuō)明:1、一個(gè)、一個(gè)include命令只能指定一個(gè)被包含文件,如果要包含命令只能指定一個(gè)被包含文件,如果要包含n個(gè)文件,用個(gè)文件,用n個(gè)個(gè)Include命令。命令。2、#include命令的文件名,可以使用兩種括號(hào)。命令的文件名,可以使用兩種括號(hào)。#include 先在引用被包含文件的目錄查找文件,若沒(méi)有,再到系統(tǒng)指定的目錄查先在引用被包含文件的目錄查找文件,若沒(méi)有,再到系統(tǒng)指定的目錄查找。找。 #include 僅在系統(tǒng)指定的目錄查找文件。僅在系統(tǒng)指定的目錄查找文件。4/30/2022精選ppt14預(yù)處理程序提供了條件編譯的功能??梢园床煌臈l件
13、去編譯不同的程序部分,因而產(chǎn)生不同的目標(biāo)代碼文件。這對(duì)于程序的移植和調(diào)試是很有用的。條件編譯有三種形式,下面分別介紹:4/30/2022精選ppt151. 第一種形式:#ifdef 標(biāo)識(shí)符 程序段1#else 程序段2#endif它的功能是,如果標(biāo)識(shí)符已被 #define命令定義過(guò)則對(duì)程序段1進(jìn)行編譯;否則對(duì)程序段2進(jìn)行編譯。如果沒(méi)有程序段2(它為空),本格式中的#else可以沒(méi)有,即可以寫為:#ifdef 標(biāo)識(shí)符程序段 #endif4/30/2022精選ppt162. 第二種形式: #ifndef 標(biāo)識(shí)符 程序段1 #else 程序段2 #endif 與第一種形式的區(qū)別是將“ifdef”改為“ifndef”。它的功能是,如果標(biāo)識(shí)符未被#defin
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度股份代持與股權(quán)激勵(lì)實(shí)施方案協(xié)議
- 2025年度足療中心員工工資保底與員工滿意度調(diào)查協(xié)議
- 房產(chǎn)證抵押貸款額度調(diào)整協(xié)議(2025年度)
- 2025年度食品包裝設(shè)計(jì)及委托加工合同
- 二零二五年度儲(chǔ)蓄存款業(yè)務(wù)創(chuàng)新激勵(lì)機(jī)制合同
- 二零二五年度銀行賬戶監(jiān)管協(xié)議:銀行賬戶資金監(jiān)管與網(wǎng)絡(luò)安全保障合同
- 二零二五年度智能物流件代發(fā)合作協(xié)議
- 二零二五年度體育賽事運(yùn)營(yíng)補(bǔ)充協(xié)議范本
- 二零二五年度茶飲連鎖品牌全國(guó)代理權(quán)獨(dú)家協(xié)議
- 幼兒園學(xué)生人身安全賠償協(xié)議范本2025
- 2025年三八婦女節(jié)校長(zhǎng)致辭-以柔韌破萬(wàn)鈞以丹心育桃李
- 2025年浙江省建筑安全員C證考試(專職安全員)題庫(kù)及答案
- 2025年健身教練合同協(xié)議樣本
- 2025年常州工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)(培優(yōu))
- 2025年湖南商務(wù)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)必考題
- 中儲(chǔ)糧黑龍江分公司招聘考試試卷2023
- 化學(xué)實(shí)驗(yàn)室安全職責(zé)分配
- 1.2 讀懂彼此的心 第二課時(shí) 課件 2024-2025學(xué)年五年級(jí)下冊(cè)道德與法治 統(tǒng)編版
- 2018-2022年北京市中考真題數(shù)學(xué)試題匯編:選擇壓軸(第8題)
- 2025年哈爾濱鐵道職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 2025年貴州黔源電力股份有限公司招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論