版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第10章 編譯預(yù)處理,編譯預(yù)處理,文件包含 宏定義 條件編譯,10.1 文件包含,命令的一般形式 格式1: #include 格式2: #include 文件名,文件包含是將指定的某個(gè)源文件的內(nèi)容全部包含到當(dāng)前文件中。用include命令實(shí)現(xiàn)。,格式1:預(yù)處理程序僅在C所在目錄下查找指定文件 格式2:預(yù)處理程序首先在當(dāng)前目錄中查找指定文件 若找不到再到C所在目錄中查找。,#define 宏名 字符串,宏定義的功能: 在進(jìn)行編譯前,用字符串原樣替換程序中的宏名。 這個(gè)替換過程稱為“宏替換”或“宏展開”,字符串也稱為替換文本。,一般格式:,10.2 不帶參數(shù)的宏定義,#define PI 3.14
2、 #define S PI*r*r #define V 4*S*r/3 main( ) float r; printf(nInput r:); scanf(%f, ,宏定義的作用域是從定義處開始到源文件結(jié)束, 但根據(jù)需要可用undef命令終止其作用域。形式為:,#undef 宏名,#define YES 1 main() printf(%d,YES); max(); #undef YES #define YES 0 max() printf(%d,YES); ,定義形式:,#define 宏名(形參表) 字符串,功能: 用宏名后圓括號(hào)中的實(shí)參替換字符串中的形參 把源程序中所有帶參數(shù)的宏名用宏定
3、義中的字符串替換,10.3 帶參數(shù)的宏定義,不能加空格,#define S(a,b) a*b . area=S(3,2); 宏展開: area=3*2;,引用形式:,宏名(實(shí)參表),#define S (r) PI*r*r 相當(dāng)于定義了不帶參宏S,代表字符串“(r) PI*r*r”,例: #define POWER(x) x*x x=4; y=6; z=POWER(x+y); 宏展開: z=x+y*x+y; 一般寫成: #define POWER(x) (x)*(x) 宏展開:z=(x+y)*(x+y);,形參用實(shí)參換,其它字符保留, 宏體及各形參外一般應(yīng)加括號(hào)(),練習(xí): #define M
4、A(x) x*(x-1) main( ) int a=1,b=2; printf(%dn, MA(1+a+b); ,輸出結(jié)果:8,注意:帶參數(shù)的宏定義與函數(shù)是不同的!,函數(shù)調(diào)用是在運(yùn)行時(shí)處理的,先求表達(dá)式的值,然后代入臨時(shí)分配的形參, 有類型問題有返回值。 函數(shù)調(diào)用不改變?cè)闯绦颉?宏展開則是在預(yù)編譯時(shí)進(jìn)行的,只將實(shí)參字符置換對(duì)應(yīng)的形參,不分配單元,不進(jìn)行值的傳遞,沒有類型問題, 也無返回值的概念。 宏展開后源程序發(fā)生變化。 本質(zhì)上宏展開僅僅是字符序列的替換,由編譯系統(tǒng)對(duì)替換后字符序列進(jìn)行解釋和語法檢查,只占編譯時(shí)間。,格式1: #ifdef 標(biāo)識(shí)符 程序段 1 #else 程序段 2 #end
5、if,10.4 條件編譯,若所指定的標(biāo)識(shí)符已經(jīng)被#define定義,則編譯程序段1,否則編譯程序段2,#include #define MA 1 main( ) int a=10; #ifdef MA a=a-10; printf(%dn,a); #else a=a+10; printf(%dn,a); #endif ,輸出結(jié)果:0,0,10.4 條件編譯,格式2: #ifndef 標(biāo)識(shí)符 程序段 1 #else 程序段 2 #endif,若所指定的標(biāo)識(shí)符未被#define定義,則編譯程序段1,否則編譯程序段2,#include #define MA 1 main( ) int a=10; #ifndef MA a=a-10; printf(%dn,a); #else a=a+10; printf(%dn,a); #endif ,輸出結(jié)果:20,/#define MA 1,輸出結(jié)果:0,10.4 條件編譯,格式3: #if 常量表達(dá)式 程序段 1 #else 程序段 2 #endif,若常量表達(dá)式非0,則編譯程序段1,否則編譯程序段2,#include #define LE
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院感染的培訓(xùn)試題及答案
- 詞匯運(yùn)用試題及答案
- 低碳經(jīng)濟(jì)培訓(xùn)考試試卷及答案(標(biāo)準(zhǔn)版)
- 支氣管哮喘、支氣管擴(kuò)張、肺炎及肺膿腫、肺結(jié)核聯(lián)合試題(附答案)
- 年建筑安全員c證考試題庫及答案
- 醫(yī)院感染管理培訓(xùn)試題及答案
- 茶藝師考試題及參考答案
- 學(xué)法考試題庫及答案
- 食品檢驗(yàn)相關(guān)知識(shí)要點(diǎn)測(cè)試試卷及答案解析
- 醫(yī)院感染管理知識(shí)考核試卷及答案
- 北京市順義區(qū)2025-2026學(xué)年八年級(jí)上學(xué)期期末考試英語試題(原卷版+解析版)
- 中學(xué)生冬季防溺水主題安全教育宣傳活動(dòng)
- 2026年藥廠安全生產(chǎn)知識(shí)培訓(xùn)試題(達(dá)標(biāo)題)
- 2026年陜西省森林資源管理局局屬企業(yè)公開招聘工作人員備考題庫及參考答案詳解1套
- 冷庫防護(hù)制度規(guī)范
- 承包團(tuán)建燒烤合同范本
- 口腔種植牙科普
- 英語A級(jí)常用詞匯
- NB-T 47013.15-2021 承壓設(shè)備無損檢測(cè) 第15部分:相控陣超聲檢測(cè)
- 打針協(xié)議免責(zé)書
- 四川省成都市八年級(jí)上學(xué)期物理期末考試試卷及答案
評(píng)論
0/150
提交評(píng)論