版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課題第11章編譯預(yù)處理授課人課型新授課時2教學(xué)目標(biāo)知識目標(biāo):使學(xué)生掌握預(yù)處理中宏定義、文件包含及條件編譯的使用場合及其格式。德育目標(biāo):滲透事物之間的相互聯(lián)系的辯證思想,教會學(xué)生用聯(lián)系的方法掌握新知識預(yù)處理中宏定義、文件包含及條件編譯的使用場合及其格式。教重教難教方學(xué)點學(xué)點學(xué)法預(yù)處理中宏定義、文件包含及條件編譯的使用場合及其格式。講述,分組練習(xí),討論教學(xué)手段與教具多媒體輔助板書設(shè)計課后記教 學(xué) 過 程教師活動學(xué)生活動【復(fù)習(xí)提問】【講授新課】11.1宏定義11.1.1不帶參數(shù)的宏定義用一個指定的標(biāo)識符(即宏名)來代表一個字符串,其一般格式如下:#define宏名字符串其中的宏名是一個標(biāo)識符,字符串可以是常量、關(guān)鍵字、完整的語句或表達式等形式。在編譯時,編譯程序把源文件中出現(xiàn)的宏名用字符串來取代。如:#definePI3.14159它的作用是指定用宏名PI來代替"3.14159"這個字符串,在編譯預(yù)處理時,把程序中在該命令以后的所有PI都用"3.14159"代替?!纠}11-1】不帶參數(shù)的宏定義在程序中應(yīng)用舉例。#definePI3.14159#defineR2.6main(){floats;5 s=2*PI*R;printf("s=%f",s);}經(jīng)過編譯預(yù)處理后將得到如下程序:main(){floats;s=2*3.14159*2.6;printf("s=%f",s);}【說明】①宏名通常用大寫字母表示,以與變量名相區(qū)別。②用宏名代替一個字符串,只是作簡單的替換,不作語法檢查。只有在編譯已被宏展開后的源程序時,才進行語法檢查。③一個宏名一旦被定義了,在沒有消除該定義之前,就不能用max.b預(yù)覽與源文pook118.檔一致,下載高速教 學(xué) 過 程教師活動學(xué)生活動它來定義其它的值。④#undef命令可以終止宏定義的作用域。若一個宏名取消了原來的定義,便可被重新定義為其他的值。11.1.2帶參數(shù)的宏定義與不帶參數(shù)的宏定義不同的是,它不是進行簡單的字符中替換,還要進行參數(shù)替換。其定義的一般形式為:#define宏名(參數(shù)表)字符串字符串中包含小括號內(nèi)指定的參數(shù)。如:#defineS(a,b)a*barea=s(2,3);在程序用了S(2,3),把2,3分別代替宏定義中的形式參數(shù)a、b,即用2*3代替S(2,3)。因此賦值語句展開為area=2*3;對于帶參數(shù)的宏,在進行宏替換時,按#define命令中指定的字符串從左向右進行置換。如果串中包含宏中的形參(如a、b),則將程序語句中相應(yīng)的實參代替形參,如果宏定義中的字符串中的字符不是參數(shù)字符(如a*b中的*號),則保留。【例題11-2】帶參數(shù)的宏定義在程序中應(yīng)用舉例。#definePI3.14159#defineAREA(x)PI*x*xmain(){floatr,s;5 r=1.5;s=AREA(r);printf("s=%f",s);}經(jīng)過編譯預(yù)處理后將得到如下程序:main(){floatr,s;r=1.5;s=3.14159*r*r;printf("s=%f",s);}教 學(xué) 過 程教師活動學(xué)生活動【說明】①在寫帶參數(shù)的宏定義時,宏名與帶括號參數(shù)間不能有空格。②調(diào)用帶參數(shù)的宏與函數(shù)調(diào)用在形式上非常相似。但它們事實上不是一回事。③要切記,預(yù)處理程序用一個字符串代替另一個字符串時,它完全是原封不動地進行替換,不作任何檢查。11.2包含文件預(yù)處理中的“包含文件”(或“文件包含”),是指一個文件可以把其它文件的內(nèi)容包含進來即將另外的文件包含到本文件之中C語言提供了#include命令來實現(xiàn)文件包含的操作。其命令格式有如下兩種:格式1:#include<filename>格式2:#include"filename"其中filename是一個現(xiàn)存的文件,其擴展名一般是".h"。格式按系統(tǒng)規(guī)定的標(biāo)準(zhǔn)目錄檢索文件;而格式2是首先在原來的源文件目錄中檢索指定的文件,如果找不到,則按系統(tǒng)指定的標(biāo)準(zhǔn)方式繼續(xù)查找。file1.c file2.cfile1.c預(yù)覽與源文.檔一致,下載高清教 學(xué) 過 程教師活動學(xué)生活動圖11-1文件包含示意圖圖11-1中,最左邊的框表示文件file1.c,它有一個#include"file2.c"命令,然后還有其它內(nèi)容(以A表示)。中間的框表示文件file2.c,文件內(nèi)容以B表示。在編譯預(yù)處理時,要對#include命令進行“文件包含”處理:將file2.c的全部內(nèi)容復(fù)制插入到#include"file2.c"處,即file2.c被包含到file1.c中,得到最右邊框中所示的結(jié)果。在接著往下進行的編譯中,將“包含”以后的file1.c作為一個源文件進行編譯?!拔募泵钍呛苡杏玫?,它可以節(jié)省程序設(shè)計人員的重復(fù)勞動。在程序設(shè)計中,可以把一些具有公用性的變量、函數(shù)的定義或說明以及宏定義等連接在一起,單獨構(gòu)成一個文件。使用#include命令把它們包含在所需的程序中。例如在開發(fā)一個應(yīng)用系統(tǒng)中若定義了許多宏,可以把它們收集到一個單獨的頭文件中(如user.h)。假設(shè)user.h文件包含有如下內(nèi)容:#include<stdio.h>#include<string.h>#defineYES1#defineNOO#defineNULL'\0'當(dāng)程序中需要用到上面這些宏定義時,可以在源程序文件中寫入文件包含命令:#include"user.h"11.3條件編譯一般情況下,源程序中所有的行都參加編譯。但有時希望對其中一部分內(nèi)容只在滿足一定條件才進行編譯,也就是對一部分內(nèi)容指定編譯的條件,這就是“條件編譯”。條件編譯命令有以下幾種形式:它的作用是當(dāng)指定的表達式值為真(非零)時就編譯程序段1,否則編譯程序段2。其中#else部分可以沒有。max.b預(yù)覽與源文pook118.檔一致,下載高教 學(xué) 過 程教師活動學(xué)生活動【例題11-3】寫出下程序的運行結(jié)果。#defineX5main(){#ifxprintf("|X|=%d",X);5 #elseprintf("|X|=%d",-X);#endif}程序的運行結(jié)果:|X|=5【說明】程序中第6行沒有被編譯,這樣可以減少目標(biāo)代碼的長度。所以合理地使用條件編譯命令,可以有效地減少目標(biāo)代碼的長度。2.#ifdef<標(biāo)識符>程序段1#else程序段2#endif它的作用是當(dāng)標(biāo)識符已經(jīng)被定義過,則對程序段1進行編譯,否則編譯程序段2,其中#else部分可以沒有。如果一個C源程序在不同計算機系統(tǒng)上運行,而不同的計算機又有一定的差異(例如,有的機器以16位(2個字節(jié))來存放一個整數(shù),而有的則以32位存放一個整數(shù)),這樣往往需要對源程序作必要的修改,這就降低了程序的通用性??梢杂靡韵聴l件編譯:#ifdefIBM-PC#defineINTEGERSIZE16
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年榆林市第五幼兒園招聘備考考試試題附答案解析
- 2026年甘肅省嘉峪關(guān)市民政局招聘公益性崗位人員參考考試試題附答案解析
- 區(qū)隊安全生產(chǎn)例會制度
- 綠色基地生產(chǎn)管理制度
- 安全生產(chǎn)宣傳報道制度
- 寫字樓安全生產(chǎn)十項制度
- 工廠生產(chǎn)金屬管理制度
- 生產(chǎn)運行記錄管理制度
- 2026廣西柳州事業(yè)單位招聘1111人參考考試題庫附答案解析
- 農(nóng)業(yè)安全生產(chǎn)制度范本
- 三年級上冊數(shù)學(xué)第三單元題型專項訓(xùn)練-判斷題(解題策略專項秀場)人教版(含答案)
- 湖南省婁底市新化縣2024-2025學(xué)年高一上學(xué)期期末考試生物試題(解析版)
- GB/T 45629.1-2025信息技術(shù)數(shù)據(jù)中心設(shè)備和基礎(chǔ)設(shè)施第1部分:通用概念
- 2025年中考歷史開卷考查范圍重大考點全突破(完整版)
- 學(xué)術(shù)誠信與學(xué)術(shù)規(guī)范研究-深度研究
- 《ETF相關(guān)知識培訓(xùn)》課件
- (一模)烏魯木齊地區(qū)2025年高三年級第一次質(zhì)量英語試卷(含答案)
- 2025年云南省普洱市事業(yè)單位招聘考試(833人)高頻重點提升(共500題)附帶答案詳解
- DB15-T 3677-2024 大興安嶺林區(qū)白樺樹汁采集技術(shù)規(guī)程
- 2024年《13464電腦動畫》自考復(fù)習(xí)題庫(含答案)
- 義務(wù)教育階段學(xué)生語文核心素養(yǎng)培養(yǎng)的思考與實踐
評論
0/150
提交評論