freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c程序設(shè)計實踐教程(中)ppt-展示頁

2024-10-26 00:27本頁面
  

【正文】 函數(shù)等 )都在同一個文件作用域內(nèi),使得全局性標(biāo)識符的重名問題、干擾問題非常突出,非常棘手。 包含命令方式 ? 在定義 main( )函數(shù)的文件中將組成同一程序的其他文件用包含命令包含進(jìn)來,由編譯程序?qū)@些源程序文件一起編譯,并鏈接成一個可執(zhí)行的文件。由此可見,頭文件 Circle模塊的接口,對于 Circle模塊的實現(xiàn)和使用都至關(guān)重要。后者,通過 Circle模塊的接口來規(guī)范 Circle模塊的使用。前者,用 Circle模塊的接口來約束 Circle模塊的實現(xiàn)。 } 面向過程的 多文件組織程序 實例 ? 頭文件 ,應(yīng)有避免其本身被重復(fù)包含的條件編譯命令。 cout半徑為 r 的圓的面積 = area(r)39。 cout輸入圓的半徑 :。 float area(float r) { return pi*r*r。 ⑴ ifndef _CIRCLE_H define _CIRCLE_H float area(float r)。 面向過程的 多文件組織程序 實例 ? 例 將例 。 ? 實現(xiàn)文件是模塊的實現(xiàn)細(xì)節(jié)。 上述兩個程序文件經(jīng)編譯鏈接,并運行后,輸出: x=2 多文件組織程序的原則 ? 將一個程序按功能 (面向過程 )或按類 (面向?qū)ο?)分成若干模塊,再將每個模塊程序的接口和實現(xiàn)分離,分存于指定的頭文件 (.h)和實現(xiàn)文件 (.cpp)中。編譯上述兩個程序文件時無錯,但鏈接時出錯,原因是找不到全局變量 x。 ?若改成: extern int x。\n39。 ? 文件 : include void main(void) { extern int x。 函數(shù)原型說明 ,將 f()函數(shù)的作用域擴(kuò)展到本文件,以便此后調(diào)用。 } ? 在文件 f(),在調(diào)用前必須增加如下函數(shù)原型說明: extern int f(int)。在定義函數(shù)時,函數(shù)的類型前加 static,如: static float f( )//內(nèi)部函數(shù) { ... } ? 外部函數(shù)也稱全局函數(shù): 既可在本文件內(nèi)使用,也可在其他文件中使用的函數(shù)。 ? 多文件組織程序涉及: 編譯、鏈接,一個文件中的函數(shù)調(diào)用另一個文件中的函數(shù)或使用另一個文件中的全局變量等。 ? 多文件組織程序: 一個程序放在一個以上的文件中。 條件編譯命令將頭文件的內(nèi)容括起來。 endif //C 條件編譯命令將頭文件的內(nèi)容括起來。 ⑵定義頭文件時,使用條件編譯,以保證同一頭文件不論被包含多少次,只有第一次的包含命令起作用。 ? 解決辦法: ⑴同一頭文件在源程序文件中保證只包含一次。 } 編譯源程序文件 。 cout圓面積 = area39。 條件編譯防止包含文件重復(fù)包含 設(shè)文件 : float area。 endif 調(diào)試程序期間,在源程序的開頭增加宏定義: define DEBUG 實現(xiàn)了輸出調(diào)試信息的目的。 傳統(tǒng)條件編譯命令 現(xiàn)代的條件編譯命令 條件編譯用于程序調(diào)試 ? 程序調(diào)試時常要輸出調(diào)試信息,而調(diào)試結(jié)束不輸出,則可將輸出調(diào)試信息的語句用條件編譯括起來,如: ifdef DEBUG coutx=x39。 ? 條件編譯命令可出現(xiàn)在程序中的任何位置。 ? 條件編譯命令分類: ⑴傳統(tǒng)條件編譯命令:根據(jù)宏名是否已經(jīng)定義來確定是否要編譯某些程序行; ⑵現(xiàn)代的條件編譯命令:根據(jù)表達(dá)式的值來確定是否要編譯某些程序行。 ⑷頭文件為設(shè)計復(fù)雜的或多人合作的程序提供了便利。 ? 頭文件的作用與用途: ⑴頭文件是后續(xù)編程的約定; ⑵頭文件便于后續(xù)編程時引用,便于時刻檢查引用頭文件的源程序是否嚴(yán)格遵守編程約定,為程序的模塊級編程與調(diào)試、系統(tǒng)級編程與調(diào)試帶來諸多便利。 ⑸為了便于文件包含,允許在文件名前加路徑,例如: include c:\\my\\ 頭文件 ? 頭文件 :因 包含文件的擴(kuò)展名 “ .h”( head) 而得名 。 ⑶在一個包含文件中可包含其他包含文件。當(dāng)然也可用其他擴(kuò)展名或不用擴(kuò)展名。 } 并把該臨時文件交給編譯程序進(jìn)行編譯。 void main(void){ coutx39。\n39。 文件包含舉例 ? 設(shè)文件 : int x=2。 格式 2: includefilename 從當(dāng)前目錄查找包含的文件。 ? 文件包含命令: 格式 1: includefilename 按編譯系統(tǒng)規(guī)定的路徑 (include目錄或其子目錄 )查找包含文件。 “ 包含文件 ” 處理 ? 文件包含:一個源文件可將另一個源文件的全部內(nèi)容包含進(jìn)來。 ⑷函數(shù)可用 return語句返回一個值,而宏不返回值。宏調(diào)用僅作替換,不做任何計算;而函數(shù)調(diào)用是在目標(biāo)程序執(zhí)行期間,先依次求出各個實參的值,然后才執(zhí)行函數(shù)的調(diào)用。 ⑵調(diào)用處理不同。 帶參宏與函數(shù)有些相似,但兩者有本質(zhì)區(qū)別 ⑴定義形式不同。 ⑶當(dāng)一個宏定義多于一行時必須使用續(xù)行符 “ \” ,即在按換行符 (Enter鍵 )之前先輸入一個 “ \” 。若在宏名后有空格,則將空格后的所有字符都作為無參宏所定義的字符串,而不作為形參。 方法②更好。 ?解決方法: ①將 B行的宏調(diào)用改寫成: c=AREA((2+3),(3+4))。 //B c的值不為 35,而是 15。 帶參宏說明 ⑴宏調(diào)用中的實參若含表達(dá)式,則在宏定義中要用圓括號把形參括起來或在宏調(diào)用中把實參括起來,以免出錯。宏擴(kuò)展僅作字符串替代,不作計算。在宏調(diào)用中給出的參數(shù)稱為實參。 ?例如:宏 AREA有參數(shù) a和 b。 ? 帶參數(shù)宏舉例: define AREA(a,b) a*b b=AREA(,)。 } 程序運行結(jié)果: A參觀展覽會! ⑺在同一個作用域內(nèi),同一個宏名不允許重復(fù)定義。 例 。\n39。 //C C行輸出為 23, 而不是 64。如: define A 3+5 define B A*A coutB39。替換后, A行為: define AREA ** ⑷ 宏擴(kuò)展時,只對宏名作字符串代換,不作任何計算,也不作任何語法檢查。如例 A行,在宏定義 AREA時,用到已定義的宏名 PI和 R。宏名的作用域從宏定義開始到本源程序文件結(jié)束。當(dāng)然,從語法上來講,任一合法的標(biāo)識符均可用作宏名。\n39。 ? 又如: define PROMPT 面積為 : ? 例 宏定義的使用。這種替換稱為 “ 宏替換 ” 或 “ 宏擴(kuò)展 ” 或 “ 宏展開 ” 。 ? 舉例: define PI 其作用是將宏名 PI定義為字符串 。 ? 宏定義分為: ⑴帶參數(shù)的宏定義; ⑵不帶參數(shù)的宏定義。 ? 編譯預(yù)處理: 編譯源程序前,先用預(yù)處理程序處理源程序中的編譯預(yù)處理命令,并過濾源程序中的注釋和多余空白符,生成一個完全用 C++語言表達(dá)的臨時源程序文件供編譯系統(tǒng)處理。C++程序設(shè)計實踐教程 (中 ) 第 7章 編譯預(yù)處理和程序的多文件組織 宏定義 文件包含 條件編譯 程序的多文件組織 作業(yè): 4/7/8 ? 編譯預(yù)處理命令: 以 開頭,以回車結(jié)束,獨占一行;可出現(xiàn)在程序中的任何位置,常置于源程序的開始;不屬于 C++的語法范疇。 ? 常用編譯預(yù)處理命令: 宏、文件包含和條件編譯。 宏定義 ? 宏定義:用預(yù)處理命令 define實現(xiàn)。 不帶參數(shù)的宏定義 ? 格式: define 標(biāo)識符 字符或字符串 其中,標(biāo)識符稱為宏名。在編譯預(yù)處理時,將該命令后所有出現(xiàn) PI處均用 換。 ? 宏替換的本質(zhì)是字符串替換。 include define PI define R define AREA PI*R*R //A define PROMPT 面積= void main(void) { coutPROMPTAREA39。 } ? 程序運行結(jié)果: 面積= 不帶參宏說明 ⑴通常宏名用大寫字母表示,以別于變量名。 ⑵宏定義可出現(xiàn)在程序中的任何位置,但通常放在源程序文件的開始。 ⑶在宏定義中可用已定義的宏名。 在編譯預(yù)處理時,先對該行中的 PI和 R作替換。若宏定義時書寫不正確,會得到不正確的結(jié)果或編譯時出現(xiàn)語法錯誤。\n39。因 C行宏擴(kuò)展后為: cout3+5*3+539。 ⑸ 若要終止宏名的作用域,可用預(yù)處理命令: undef 宏名 例如: define PI … undef PI //終止 PI的作用域,其后不能再用 PI ⑹ 當(dāng)宏名出現(xiàn)在字符串中時,編譯預(yù)處理不做宏擴(kuò)展。 include define A 歡迎 define B A參觀展覽會 void main(void) { coutB! \n。 帶參數(shù)的宏定義 ? 帶參數(shù)宏定義的形式: define 宏名 (參數(shù)表 ) 使用參數(shù)的字符或字符串 帶參宏定義在宏擴(kuò)展時,要對宏名和參數(shù)做替換。 ?宏定義中的參數(shù)稱為形參。 宏調(diào)用:使用帶參宏。 ?帶參宏擴(kuò)展:先用實參替代宏定義中的形參,并將替代后的字符串替代宏調(diào)用。 ?舉例:宏調(diào)用經(jīng)宏擴(kuò)展后為: b=*。例如: define AREA(a,b) a*b c=AREA(2+3,3+4)。 ?出錯原因:因 B行擴(kuò)展后為: c=2+3*3+4。 ② 將宏定義改為: define AREA(a,b) (a)*(b) 則 B行經(jīng)宏擴(kuò)展后,成為: c=(2+3)*(3+4)。 ⑵在宏定義時,宏名與左括號之間不能有空格。例如: define AREA (a,b) (a)*(b) 則編譯預(yù)處理程序認(rèn)為無參宏 AREA定義為 “ (a,b) (a)*(b)”, 而不將 (a,b)作為參數(shù)。例如: define AREA(a,b) (a)*\ (b) ⑷ 帶參宏主要用來取代功能簡單、代碼短小、運行時間極短、調(diào)用頻繁的程序代碼,但因其使用時有一些副作用,故 C++引入內(nèi)聯(lián)函數(shù)以取代帶參宏。宏定義只給出形參,而不指明形參類型;而函數(shù)定義必須指定每個形參的類型。宏由編譯預(yù)處理程序處理,而函數(shù)由編譯程序處理。 ⑶函數(shù)調(diào)用要求實參類型必須與對應(yīng)的形參類型一致,即做類型檢查;而宏調(diào)用沒有參數(shù)類型檢查。 ⑸多次調(diào)用同一個宏時,要增加源程序的長度;而對同一個函數(shù)的多次調(diào)用,不會使源程序變長。通過編譯預(yù)處理命令 include實現(xiàn)。主要用于包含編譯系統(tǒng)預(yù)定義的頭文件。主要用于包含用戶自定義的文件。 ? 設(shè)文件 : include void main(void){ coutx39。 } ? 上述程序經(jīng)過編譯預(yù)處理后,用文件 編譯預(yù)處理命令行產(chǎn)生一個 臨時文件 ,其內(nèi)容為: int x=2。\n39。 文件包含說明 ⑴包含文件的擴(kuò)展名推薦用 “ .h”( head的縮寫)。 ⑵一個 include命令只能指定一個被包含的文件,若要包含 n個文件,則要用 n個 include命令。 ⑷ include命令可出現(xiàn)在程序中的任何位置,通常放在程序的開頭。 ? 頭文件的內(nèi)容:聲明公用的數(shù)據(jù)類型、函數(shù)原型、宏定義、全局變量、命名空間等。 ⑶頭文件是實現(xiàn)代碼重用的好辦法之一。 條件編譯 ? 條件編譯:程序中的某些行僅在滿足某種條件時,才要編譯程序?qū)ζ渚幾g;否則不被編譯。推薦使用。編譯預(yù)處理程序在處理條件編譯時,將要編譯的程序段寫到一個臨時文件中,供編譯程序編譯。\n39。一旦程序調(diào)試結(jié)束,只要刪除 DEBUG的宏定義,重新編譯程序,則所有的輸出調(diào)試信息的程序部分均不編譯。 設(shè)文件 : include define PI define R 源程序文件 : include include include void main(void) { area=PI*R*R。\n39。原因是變量 area重復(fù)定義
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1