過程抽象函數(shù)市公開課獲獎?wù)n件_第1頁
過程抽象函數(shù)市公開課獲獎?wù)n件_第2頁
過程抽象函數(shù)市公開課獲獎?wù)n件_第3頁
過程抽象函數(shù)市公開課獲獎?wù)n件_第4頁
過程抽象函數(shù)市公開課獲獎?wù)n件_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第四章 過程抽象函數(shù)第1頁第1頁本章內(nèi)容 子程序概念 C+函數(shù) 變量局部性 標(biāo)識符作用域 遞歸函數(shù) 函數(shù)名重載 帶缺省值形式參數(shù) 內(nèi)聯(lián)函數(shù) 條件編譯 原則庫函數(shù)第2頁第2頁子程序子程序是取了名一段程序代碼,在程序中通過名字來使用它們。數(shù)據(jù)傳遞全局變量(不好):所有子程序都能訪問到變量。參數(shù):形式參數(shù)(形參)和實(shí)在參數(shù)(實(shí)參)。傳遞方式有:值傳遞:把實(shí)參值復(fù)制一份給形參。地址或引用傳遞:把實(shí)參地址傳給形參。第3頁第3頁子程序作用:減少重復(fù)代碼,節(jié)約勞動力;實(shí)現(xiàn)過程抽象,即,一個子程序代表一個功效,使用者只需知道所使用子程序功效,而不必關(guān)懷它們是如何實(shí)現(xiàn)。為處理復(fù)雜程序設(shè)計問題提供了一個手段。第4

2、頁第4頁函數(shù)函數(shù)是C+提供用于實(shí)現(xiàn)子程序語言成分。函數(shù)定義: () 描述了函數(shù)返回值類型,可認(rèn)為任意C+數(shù)據(jù)類型。當(dāng)返回值類型為void時,它表示函數(shù)沒有返回值。用于標(biāo)識函數(shù)名字,用標(biāo)識符表示。描述函數(shù)形式參數(shù),由零個、一個或多個形參闡明(用逗號隔開)構(gòu)成,形參闡明格式為: 第5頁第5頁 為一個,用于實(shí)現(xiàn)相應(yīng)函數(shù)功效。函數(shù)體內(nèi)能夠包括return語句,格式為:return ; return;當(dāng)函數(shù)體執(zhí)行到return語句時,函數(shù)馬上返回到調(diào)用者。 在函數(shù)體中不能用goto語句轉(zhuǎn)出函數(shù)體。第6頁第6頁函數(shù)例子int factorial(int n) /求n階乘int i,f=1;for (i=2

3、; i=n; i+) f *= i;return f; 第7頁第7頁函數(shù)調(diào)用 對于定義一個函數(shù),必須要調(diào)用它,它函數(shù)體才會執(zhí)行。 函數(shù)調(diào)用格式以下:()由零個、一個或多個表示式組成(逗號分割)實(shí)參個數(shù)和類型應(yīng)與對應(yīng)函數(shù)形參相同。類型假如不同,編譯器會試圖進(jìn)行隱式轉(zhuǎn)換。不能用goto語句從函數(shù)外轉(zhuǎn)入函數(shù)體第8頁第8頁函數(shù)調(diào)用例子.int main()int x;cout x;cout Factorial of x is factorial(x) /調(diào)用階乘函數(shù) endl;return 0; 第9頁第9頁函數(shù)調(diào)用執(zhí)行過程計算實(shí)參值(對于多個實(shí)參,C+沒有要求計算順序);把實(shí)參分別傳遞給被調(diào)用函數(shù)形

4、參;執(zhí)行函數(shù)體;函數(shù)體中執(zhí)行return語句返回函數(shù)調(diào)用點(diǎn),調(diào)用點(diǎn)取得返回值(假如有返回值)并執(zhí)行調(diào)用之后操作。第10頁第10頁函數(shù)申明 程序中調(diào)用所有函數(shù)都要有定義。假如函數(shù)定義在其它文獻(xiàn)(如:C+原則庫)中或定義在本源文獻(xiàn)中使用點(diǎn)之后,則在調(diào)用前需要對被調(diào)用函數(shù)進(jìn)行申明。函數(shù)申明格式下列: (); /函數(shù)原型extern ();在函數(shù)申明中,中能夠只列出形參類型而不寫形參名。 第11頁第11頁基于功效分解和復(fù)合程序設(shè)計人們在設(shè)計一個復(fù)雜程序時,經(jīng)常會用到功效分解和復(fù)合兩種手段:功效分解:在進(jìn)行程序設(shè)計時,首先把程序功效分解成若干子功效,每個子功效又能夠分解成若干子功效,等等,從而形成了一個

5、自頂向下(top-down)、逐步精化(step-wise)設(shè)計過程。功效復(fù)合:把已有(子)功效逐步組合成更大(子)功效,從而形成一個自底向上(bottom-up)設(shè)計過程。 子程序為基于功效分解和復(fù)合程序設(shè)計提供了基礎(chǔ):一個子程序代表了一個功效。第12頁第12頁例:用函數(shù)實(shí)現(xiàn)求小于n所有素數(shù)。#include #include using namespace std;bool is_prime(int n);/函數(shù)申明void print_prime(int n, int count);/函數(shù)申明int main()int i,n,count=1;cout n; /從鍵盤輸入一個正整數(shù)if

6、(n 2) return -1;cout 2 ,; /輸出第一個素數(shù)for (i=3; in; i+=2)if (is_prime(i)count+;print_prime(i,count);cout endl;return 0;第13頁第13頁bool is_prime(int n)int i,j;for (i=2, j=sqrt(n); i=j; i+)if (n%i = 0) return false;return true;void print_prime(int n, int count)cout n ,;if (count % 6 = 0) cout endl;第14頁第14頁函數(shù)

7、參數(shù)傳遞 C+提供了兩種參數(shù)傳遞機(jī)制:值傳遞地址和引用傳遞C+默認(rèn)參數(shù)傳遞方式是值傳遞。 第15頁第15頁值傳遞在函數(shù)調(diào)用時,采用類似賦值操作形式把實(shí)參值傳給形參。函數(shù)執(zhí)行過程中,通過形參取得實(shí)參值,函數(shù)體中對形參值改變不會影響相應(yīng)實(shí)參值。 第16頁第16頁值參數(shù)傳遞例子#include using namespace std;double power(double x, int n);int main()double a=3.0,c;int b=4;c = power(a,b);cout a , b , c = 0)while (n 0)product *= x;n-;elsewhile (

8、n 0)product /= x;n+;return product;第18頁第18頁執(zhí)行main時,產(chǎn)生三個變量(分派內(nèi)存空間)a、b和c:a: 3.0 b: 4 c: ?調(diào)用power函數(shù)時,又產(chǎn)生三個個變量x、n和product,然后分別用a、b以及1.0對它們初始化:a: 3.0 b: 4 c: ?x: 3.0 n: 4 product: 1.0函數(shù)power中循環(huán)結(jié)束后(函數(shù)返回前):a: 3.0 b: 4 c: ?x: 3.0 n: 0 product: 81.0函數(shù)power返回后:a: 3.0 b: 4 c: 81.0第19頁第19頁變量局部性在C+中,依據(jù)變量定義位置,把變量

9、分成:全局變量和局部變量。 全局變量是指在函數(shù)外部定義變量,它們普通能被程序中所有函數(shù)使用(靜態(tài)全局變量除外)。 局部變量是指在復(fù)合語句中定義變量,它們只能在定義它們復(fù)合語句(包括內(nèi)層復(fù)合語句)中使用。 第20頁第20頁全局變量和局部變量例子int x=0; /全局變量void f()int y=0; /局部變量x+; /OKy+; /OKa+; /Errorint main()int a=0; /局部變量f();a+; /OKx+; /OKy+; /Error while (x10) int b=0; /局部變量 a+; /OKb+; /OKx+; /OKb+; /Errorreturn 0

10、;第21頁第21頁變量生存期(存儲分派) 把程序運(yùn)營時一個變量占有內(nèi)存空間時間段稱為該變量生存期。 C+把變量生存期分為:靜態(tài):內(nèi)存空間從程序開始執(zhí)行時就進(jìn)行分派,直到程序結(jié)束才收回它們空間。全局變量含有靜態(tài)生存期 。自動:內(nèi)存空間在程序執(zhí)行到定義它們復(fù)合語句(包括函數(shù)體)時才分派,當(dāng)定義它們復(fù)合語句執(zhí)行結(jié)束時,它們空間將被收回。局部變量和函數(shù)參數(shù)普通含有自動生存期。 動態(tài) :內(nèi)存空間在程序中顯式地用new操作或malloc庫函數(shù)分派、用delete操作或free庫函數(shù)收回。動態(tài)變量含有動態(tài)生存期。 第22頁第22頁存儲類修飾符 在定義局部變量時,可認(rèn)為它們加上存儲類修飾符來指出它們生存期。

11、auto:使局部變量具有自動生存期。局部變量默認(rèn)存儲類為auto。 static:使局部變量具有靜態(tài)生存期,它只在函數(shù)第一次調(diào)用時進(jìn)行初始化,以后調(diào)用中不再進(jìn)行初始化,它值為上一次函數(shù)調(diào)用結(jié)束時值。 register:使局部變量也具有自動生存期,由編譯程序根據(jù)CPU存儲器使用情況來決定是否存儲在存儲器中。第23頁第23頁void f() int x=0; static int y=1; register int z=0; x+; y+; z+; cout x y z endl;第一次調(diào)用f時,輸出:1 2 1第二次調(diào)用f時,輸出:1 3 1第24頁第24頁程序?qū)嶓w在內(nèi)存中安排靜態(tài)數(shù)據(jù)區(qū)用于全局

12、變量、static存儲類局部變量以及常量內(nèi)存分派 。代碼區(qū)用于存儲程序指令,對C+程序而言,代碼區(qū)存儲是所有函數(shù)代碼;棧區(qū)用于auto存儲類局部變量、函數(shù)形式參數(shù)以及函數(shù)調(diào)用時相關(guān)信息(如:函數(shù)返回地址等)內(nèi)存分派;堆區(qū)用于動態(tài)變量內(nèi)存分派。 靜態(tài)數(shù)據(jù)區(qū)代碼區(qū)棧區(qū)堆區(qū)第25頁第25頁C+程序多模塊結(jié)構(gòu) 邏輯上,一個C+程序由一些全局函數(shù)(區(qū)別于類定義中組員函數(shù))、全局常量、全局變量/對象以及類定義構(gòu)成,其中必須有且僅有一個名字為main全局函數(shù)。函數(shù)內(nèi)部能夠包括形參、局部常量、局部變量/對象定義以及語句。物理上,能夠按某種規(guī)則對構(gòu)成C+程序各個邏輯單位(全局函數(shù)、全局常量、全局變量/對象、類等

13、)定義進(jìn)行分組,分別把它們放在若干個源文獻(xiàn)中,構(gòu)成程序模塊。 程序模塊是為了便于從物理上對程序進(jìn)行組織、管理和理解,便于多人合作開發(fā)一個程序。程序模塊是可單獨(dú)編譯程序單位。第26頁第26頁C+模塊構(gòu)成一個C+模塊普通包括兩個部分:接口(.h文獻(xiàn) ):給出在本模塊中定義、提供應(yīng)其它模塊使用一些程序?qū)嶓w(如:函數(shù)、全局變量等)申明;實(shí)現(xiàn)(.cpp文獻(xiàn)):模塊實(shí)現(xiàn)給出了模塊中程序?qū)嶓w定義。下面是一個由三個模塊(file1、file2和main)構(gòu)成C+程序。 第27頁第27頁/file1.hextern int x; /全局變量x申明extern double y; /全局變量y申明int f();

14、 /全局函數(shù)f申明/file1.cppint x=1; /全局變量x定義double y=2.0; /全局變量y定義int f() /全局函數(shù)f定義int m; /局部變量m定義.m += x; /語句.return m;第28頁第28頁/file2.hvoid g(); /全局函數(shù)g申明/file2.cpp#include file1.h /把文獻(xiàn)file1.h中內(nèi)容包括進(jìn)來void g() /全局函數(shù)g定義double z; /局部變量z定義.z = y+10; /語句.第29頁第29頁/main.cpp#include file1.h /把文獻(xiàn)file1.h中內(nèi)容包括進(jìn)來#include

15、 file2.h /把文獻(xiàn)file2.h中內(nèi)容包括進(jìn)來int main() /全局函數(shù)main定義double r; /局部變量r定義.r = x+y*f(); /語句.g(); /語句.第30頁第30頁標(biāo)識符作用域 為了對程序中實(shí)體名字進(jìn)行管理,引進(jìn)了標(biāo)識符作用域概念。一個定義了標(biāo)識符有效范圍(能被訪問程序段)稱為該標(biāo)識符作用域。C+把標(biāo)識符作用域分成若干類,其中包括:局部作用域全局作用域文獻(xiàn)作用域函數(shù)作用域函數(shù)原型作用域類作用域名空間作用域第31頁第31頁局部作用域在函數(shù)定義或復(fù)合語句中、從標(biāo)識符定義點(diǎn)開始到函數(shù)定義或復(fù)合語句結(jié)束之間程序段。 C+中局部常量名、局部變量名/對象名以及函數(shù)形

16、參名含有局部作用域。 假如在一個標(biāo)識符局部作用域中包含內(nèi)層復(fù)合語句,而且在該內(nèi)層復(fù)合語句中定義了一個同名不同實(shí)體,則外層定義標(biāo)識符作用域應(yīng)該是從其潛在作用域中扣除內(nèi)層同名標(biāo)識符作用域之后所得到作用域。 第32頁第32頁void f(). x . /Errorint x; /外層x定義. x . /外層xwhile ( . x .) /外層x . x . /外層xdouble x; /內(nèi)層x定義. x . /內(nèi)層x. x . /外層x第33頁第33頁全局作用域在函數(shù)級定義標(biāo)識符含有全局作用域。全局變量名/對象名、全局函數(shù)名和全局類名作用域普通含有全局作用域,它們在整個程序中可用。 假如在某個局部

17、作用域中定義了與某個全局標(biāo)識符同名標(biāo)識符,則該全局標(biāo)識符作用域應(yīng)扣掉與之同名局部標(biāo)識符作用域。 在局部標(biāo)識符作用域中若要使用與其同名全局標(biāo)識符,則需要用全局域選擇符(:)對全局標(biāo)識符進(jìn)行修飾(受限)。 把全局標(biāo)識符申明放在某個.h文獻(xiàn)中,在需要使用這些全局標(biāo)識符源文獻(xiàn)中用#include編譯預(yù)處理命令把申明文獻(xiàn)包括進(jìn)來。 第34頁第34頁double x; /外層x定義void f()int x; /內(nèi)層x定義. x . /內(nèi)層x. :x . /外層x第35頁第35頁文獻(xiàn)作用域在全局標(biāo)識符定義中加上static修飾符,則該全局標(biāo)識符就成了含有文件作用域標(biāo)識符,它們只能在定義它們源文件中使用。

18、C+中關(guān)鍵詞static有兩個不同含義。在局部變量定義中,static修飾符用于指定局部變量采取靜態(tài)存放分派;而在全局標(biāo)識符定義中,static修飾符用于把全局標(biāo)識符作用域改變?yōu)槲募饔糜颉?普通情況下,含有全局作用域標(biāo)識符主要用于標(biāo)識被程序各個模塊共享程序?qū)嶓w,而含有文件作用域標(biāo)識符用于標(biāo)識在一個模塊內(nèi)部共享程序?qū)嶓w。第36頁第36頁/file1.cppstatic int y; /文獻(xiàn)作用域static void f() /文獻(xiàn)作用域 ./file2.cppextern int y;extern void f();void g() . y . /Error f(); /Error第37頁第

19、37頁函數(shù)作用域語句標(biāo)號是唯一含有函數(shù)作用域標(biāo)識符,它們在定義它們函數(shù)體中任何地方都能夠訪問。 函數(shù)作用域與局部作用域區(qū)別是:函數(shù)作用域包括整個函數(shù),而局部作用域是從定義點(diǎn)開始到函數(shù)定義或復(fù)合語句結(jié)束。在函數(shù)體中,一個語句標(biāo)號只能定義一次,即使是在內(nèi)層復(fù)合語句中,也不能再定義與外層相同語句標(biāo)號。 第38頁第38頁void f().goto L; /OK.L: .goto L; /OK.void g().goto L; /Error.第39頁第39頁名空間作用域?qū)τ谝粋€多文件組成程序,有時見面臨一個問題:在一個源文件中要用到兩個分別在另外兩個源文件中定義不同全局程序?qū)嶓w(如:全局函數(shù)),而這兩個

20、全局程序?qū)嶓w名字相同。C+提供了名空間(namespace)設(shè)施來處理上述名沖突問題。 在一個名空間中定義全局標(biāo)識符,其作用域為該名空間。當(dāng)在一個名空間外部需要使用該名空間中定義全局標(biāo)識符時,可用該名空間名字來修飾或受限。第40頁第40頁3、/模塊2namespace Bint x=0;void f() . A:x . /A中x A:f(); /A中f. B:x . /B中xB:f(); /B中fusing namespace A;. x . /A中x f(); /A中f. B:x . /B中xB:f(); /B中fusing A:f;. A:x . /A中x f(); /A中f. B:x .

21、 /B中xB:f(); /B中f/模塊31、2、第41頁第41頁遞歸函數(shù)函數(shù)調(diào)用是能夠嵌套。 假如一個函數(shù)在其函數(shù)體中直接或間接地調(diào)用了自己,則該函數(shù)稱為遞歸函數(shù)。 第42頁第42頁直接遞歸void f() . . f() . .間接遞歸extern void g();void f() . . g() . .void g() . . f() . .第43頁第43頁遞歸函數(shù)作用 在程序設(shè)計中經(jīng)常需要實(shí)現(xiàn)重復(fù)性操作。循環(huán)為實(shí)現(xiàn)重復(fù)操作提供了一個路徑。實(shí)現(xiàn)重復(fù)操作另一個路徑是采用遞歸函數(shù)?!胺侄沃保―ivide and Conquer)設(shè)計辦法:把一個問題分解成若干個子問題,而每個子問題性質(zhì)與原

22、問題相同,只是在規(guī)模上比原問題要小。每個子問題求解過程能夠采用與原問題相同方式來進(jìn)行。遞歸函數(shù)為上述設(shè)計辦法提供了一個自然、簡練實(shí)現(xiàn)機(jī)制 第44頁第44頁例:求第n個fibonacci 數(shù)(遞歸解法)int fib(int n)if (n = 1) return 0;else if (n = 2) return 1;else return fib(n-2)+fib(n-1); 第45頁第45頁遞歸函數(shù)執(zhí)行過程/用遞歸函數(shù)求n! int f(int n) if (n = 0) return 1;else return n*f(n-1);第46頁第46頁遞歸條件和結(jié)束條件在定義遞歸函數(shù)時,一定要對

23、兩種情況給出描述: 遞歸條件。指出何時進(jìn)行遞歸調(diào)用,它描述了問題求解普通情況,包括:分解和綜合過程。結(jié)束條件。指出何時不需遞歸調(diào)用,它描述了問題求解特殊情況或基本情況第47頁第47頁例:解漢諾塔問題 漢諾塔問題:有A,B,C三個柱子,柱子A上穿有n個大小不同圓盤,大盤在下,小盤在上?,F(xiàn)要把柱子A上全部圓盤移到柱子B上,要求每次只能移動一個圓盤,且大盤不能放在小盤上,移動時可借助柱子C。編寫一個C+函數(shù)給出移動步驟,如:n=3時,移動步驟為:AB,AC,BC,AB,CA,CB,AB。 A B C第48頁第48頁當(dāng)n=1時,只要把圓盤從A移至B就能夠了(輸出:AB)。而當(dāng)n不小于1時,我們能夠把該

24、問題分解成下面三個子問題:把n-1個圓盤從柱子A移到柱子C。把第n個圓盤從柱子A移到柱子B。把n-1個圓盤從柱子C移到柱子B。上面子問題1和3與原問題相同,只是盤子個數(shù)少了一個;子問題2是移動一個盤子簡樸問題。第49頁第49頁#include using namespace std;void hanoi(char x,char y,char z,int n) /把n個圓盤從x表示 /柱子移至y所表示柱子。if (n = 1)cout 1: x y endl; /把第1個 /盤子從x表示柱子移至y所表示柱子。elsehanoi(x,z,y,n-1); /把n-1個圓盤從x表示柱子移至 /z所表示

25、柱子。cout n : x y 數(shù)組首地址函數(shù)名-函數(shù)首地址等等比如,對于下面重載函數(shù)定義:void print(int);void print(double);void print(char);下面函數(shù)調(diào)用:print(1); 綁定到函數(shù):void print(int);print(1.0); 綁定到函數(shù):void print(double);print(a); 綁定到函數(shù):void print(char);第54頁第54頁提升匹配按整型提升規(guī)則提升把float提升到double把double提升到long double比如,對于下述重載函數(shù):void print(int);void pri

26、nt(double);依據(jù)提升匹配,下面函數(shù)調(diào)用:print(a); 綁定到函數(shù):void print(int);print(1.0f); 綁定到函數(shù):void print(double); 第55頁第55頁原則轉(zhuǎn)換匹配任何算術(shù)類型能夠互相轉(zhuǎn)換枚舉類型能夠轉(zhuǎn)換成任何算術(shù)類型零能夠轉(zhuǎn)換成任何算術(shù)類型或指針類型任何類型指針能夠轉(zhuǎn)換成void * 派生類指針能夠轉(zhuǎn)換成基類指針每個原則轉(zhuǎn)換都是平等。 第56頁第56頁比如,對于下述重載函數(shù):void print(char);void print(char *);依據(jù)原則轉(zhuǎn)換匹配,下面函數(shù)調(diào)用:print(1); 綁定到函數(shù):void print(cha

27、r);print(0); 綁定失敗第57頁第57頁帶缺省值形式參數(shù)在C+中允許在定義或申明函數(shù)時,為函數(shù)一些參數(shù)指定默認(rèn)值。假如調(diào)用這些函數(shù)時沒有提供相應(yīng)實(shí)參,則相應(yīng)形參采用指定默認(rèn)值,不然相應(yīng)形參采用調(diào)用者提供實(shí)參值。比如,對于下面函數(shù)申明:void print(int value, int base=10); 下面調(diào)用:print(28); /28傳給value;10傳給baseprint(32,2); /28傳給value;2傳給base第58頁第58頁在指定函數(shù)參數(shù)默認(rèn)值時,應(yīng)注意下面幾點(diǎn):有默認(rèn)值形參應(yīng)處于形參表右部。比如:void f(int a, int b=1, int c=0

28、); /OKvoid f(int a, int b=1, int c); /Error 對參數(shù)默認(rèn)值指定只在函數(shù)申明處故意義。在不同源文件中,對同一個函數(shù)申明能夠?qū)λ粋€參數(shù)指定不同默認(rèn)值;在同一個源文件中,對同一個函數(shù)申明只能對它每一個參數(shù)指定一次默認(rèn)值。 第59頁第59頁處理小函數(shù)低效問題由于函數(shù)調(diào)用是需要開銷,尤其是對一些小函數(shù)頻繁調(diào)用將使程序效率有很大減少。 C+提供了兩種處理上述問題辦法:宏定義內(nèi)聯(lián)函數(shù) 第60頁第60頁宏定義 在C+中,利用一個編譯預(yù)處理命令:宏定義能夠?qū)崿F(xiàn)類似函數(shù)功效:#define凵()凵比如:#define凵max(a,b)凵(a)(b)?(a):(b)co

29、ut (b)?(a):(b)max(x+1,y*2)將被替換成:(x+1)(y*2)?(x+1):(y*2)不進(jìn)行參數(shù)類型檢查和轉(zhuǎn)換。 不利于一些工具對程序處理。 第62頁第62頁內(nèi)聯(lián)函數(shù) C+提供了另外一個處理函數(shù)調(diào)用效率不高問題設(shè)施:內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)是指在函數(shù)定義中,能夠在函數(shù)返回類型之前加上一個關(guān)鍵詞inline,比如:inline int max(int a, int b)return ab?a:b;內(nèi)聯(lián)函數(shù)作用是提議編譯程序把該函數(shù)函數(shù)體展開到調(diào)用點(diǎn)。內(nèi)聯(lián)函數(shù)形式上屬于函數(shù),它遵循函數(shù)一些要求,如:參數(shù)類型檢查與轉(zhuǎn)換。使用內(nèi)聯(lián)函數(shù)時應(yīng)注意下列幾點(diǎn): 編譯程序?qū)?nèi)聯(lián)函數(shù)限制。 內(nèi)聯(lián)函

30、數(shù)名含有文獻(xiàn)作用域。第63頁第63頁編譯預(yù)處理命令C+程序中能夠?qū)懸恍┕┚幾g程序使用命令:編譯預(yù)處理命令。編譯預(yù)處理命令不是C+程序所要完畢功效,而是用于對編譯過程給出指導(dǎo),其功效由編譯預(yù)處理系統(tǒng)來完畢。編譯預(yù)處理命令主要有:文獻(xiàn)包括命令(#include)宏定義(#define)命令條件編譯命令第64頁第64頁條件編譯編譯程序依據(jù)不同情況來選擇需編譯程序代碼。條件編譯作用:基于多環(huán)境程序編制 程序調(diào)試第65頁第65頁基于多環(huán)境程序編制#ifdef UNIX. /適合于UNIX環(huán)境代碼#else. /適合于其它環(huán)境代碼#endif. /適合于各種環(huán)境代碼第66頁第66頁程序調(diào)試加入調(diào)試信息#ifdef DEBUG. /調(diào)試信息#endif利用原則庫#include /或 .assert(x = 1);第67頁第67頁條件編譯命令慣用

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論