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

正文內(nèi)容

模塊化程序設計ppt課件-資料下載頁

2025-01-13 08:22本頁面
  

【正文】 break。 case 注釋 好的頭文件不能包含以下內(nèi)容: 一般函數(shù)定義 數(shù)據(jù)定義 如 : int a。 常量聚集定義 如 : const tbl[]={/* ? */} ; 用戶頭文件是由用戶自己定義的頭文件。 系統(tǒng)將用雙引號方式進行搜索。 include 頭文件名 .h 程序員可以用它們建立各文件之間的信息窗口。 應當注意,修改了頭文件時,所有涉及該頭文件的程序都應重新編譯,所以在編制頭文件時應盡量考慮周全。 當使用很多頭文件時,常有重復嵌入的情形發(fā)生,在這種情形下,應防止標識符重復定義的錯誤。 為避免錯誤,應使用條件編譯來測試有無重復定義。 C語言程序設計 第四節(jié) 宏定義與宏 替換 編譯預處理是以“ ” 開頭的一些命令,它通知編譯系統(tǒng):在進行正式編譯前應當先進行一些前期工作 (即編譯預處理 )。 目前, C語言的編譯預處理功能主要有如下一些: ( 1)文件包含,使用命令: include。 ( 2)宏定義,使用命令: define、 undef。 ( 3)條件編譯,使用命令: if、 ifdef、 ifndef、else、 endif、 elif、 defind。 ( 4)提供行號信息,使用命令: line。 ( 5)編譯雜注,使用命令: progma。 ( 6)錯誤信息,使用命令: error。 在這些編譯預處理中,應用最多的就是對宏的處理。 它允許程序員使用# define定義并應用宏名字書寫 C語言程序,同時也指示編譯器在正式編譯前通過宏替換,使程序能按照 C語言的語法進行編譯。 一、字符串宏定義及其基本格式 # define命令最簡單的應用就是定義一個符號常量。 格式為: # define 宏名 字符串 編譯預處理時,預處理程序將把程序文件中在該宏定義之后的所有宏名,用 define命令中定義的字符串 (稱為宏體 )替換,這個過程稱為宏替換。 符號常數(shù)的定義就是這種宏定義的一種應用。 define PI define RADIUS 使用宏定義的好處是: (1) 提高了程序的可讀性。 如果人們看到以下語句 return (**)。 和 return (**)。 是否能很快地看出它們在計算什么呢 ?顯然不能。 如果寫成下面的形式 : return (*PI*RADIUS)。 和 return (PI*RADIUS*RADIUS)。 可以看出:這是在計算圓周長和圓面積。 使用宏定義可以提高可理解性。 (2) 易修改性好。 如要將 RADIUS的值由 ,只要在# define命令中修改一處便可。 而在不使用宏定義的文件中,要將 3處的 ,而且很可能也錯把前一個返回語句也修改成 return (**)。 (3) 宏定義可以給程序設計帶來許多方便。 二、使用宏需注意的問題 ( 1)在 define命令中,宏名字與字符串 (宏體 )之間用一個或多個空格分隔。 ( 2)宏名字的使用 ◆ 宏名字不能用引號括起來 。 如 : define YES″ 1 ? printf(YES)。 將不進行宏定義 。 ◆宏名中不能含有空格。 例如想用“ A NAME” 定義“ SMISS” ,而寫成: define A NAME SMISS 則實際進行的宏定義是 A為宏名字,宏體是“ NAME SMISS” 。 C程序員一般都習慣用大寫字母定義宏名字。這樣的表示方法使宏名與變量名有明顯的區(qū)別,以避免混淆。此外有助于快速識別要發(fā)生宏替換的位置,提高程序的可讀性。 ◆不能進行宏名字的重定義。 ( 3)定義一個宏名字以后,就可以在后面使用這個宏名字了,包括在后面的宏定義中使用。 例如求圓的周長和面積的程序可以改寫為 include define PI define R define CIRCUM *PI*R /* 使用了前面定義的 R和 PI */ define AREA PI*R*R int main(void) { printf(“The circum is %f and area is %f\n”,CIRCUM,AREA)。 } /*下面是另外一種形式的宏定義 : */ include define PI define RADIUS define CIRCUM return(*PI* RADIUS)。 /*分號是 return語句的一部分 */ define AREA return(PI* RADIUS* RADIUS)。 double circum( ) { CIRCUM } double area( ) { AREA } int main(void) { printf(The circum is %f and area is %f\n,circum(),area())。 } ( 4)不能進行的宏替換。 不可以替換作為用戶標識符中的成分。 例如在前面的例子中,不可以用“ R” 替換“ CIRCUM”中的“ R” 。 不能替換字符串常量中的成分。 舉例如下: include define PI define RADIUS define CIRCUM return(*PI* RADIUS)。 define AREA return(PI* RADIUS* RADIUS)。 int main(void) { printf(“The CIRCUM is %f ”, CIRCUM)。 printf(“ and AREA is %f\n”, AREA )。 } 運行結果為: The CIRCUM is and AREA is 宏名字“ CIRCUM”和“ AREA”替換格式串“ CIRCUM”和“ AREA”。 ( 5)一行中寫不下的宏定義,應在前一行結尾使用一個續(xù)行符“ \” ,并且在下一行開始不使用空格。 例如 define AIPHABET ABCDEFGHHIJKLMN\ OPQRSTUVWXY ( 6)宏定義可以寫在源程序中的任何地方,但一定要寫在程序中引用該宏之前,通常寫在一個文件之首。對多個文件可以共用的宏定義,可以集中起來構成一個單獨的頭文件。 三、撤銷已定義的宏 用命令# undef 可以撤銷已定義的宏。 如: ? define OK 1 ? undef OK ? 在 undef 命令行之后的范圍, OK不再代表 1。 2/10/2022 135 C語言程序設計 四、帶參數(shù)的宏定義 C語言允許宏帶有參數(shù)。在宏定義中的參數(shù)稱為 形式參數(shù) ,在宏調用中的參數(shù)稱為 實際參數(shù) 。對帶參數(shù)的宏,在調用中,不僅要宏展開,而且要用實參去代換形參。 帶參宏定義格式 : define 宏名 (形參表 ) 字符串 在字符串中含有各形參。 帶參宏調用的一般形式 : 宏名 (實參表 ); 2/10/2022 136 C語言程序設計 例如: define M(y) y*y+3*y /*宏定義 */ : k=M(5)。 /*宏調用 */ : 在宏調用時,用實參 5去代替形參 y, 經(jīng)預處理宏展開后的語句為: k=5*5+3*5 2/10/2022 137 C語言程序設計 【例 】 define MAX(a,b) (ab)?a:b main(){ int x,y,max。 printf(input two numbers: )。 scanf(%d%d,amp。x,amp。y)。 max=MAX(x,y)。 printf(max=%d\n,max)。 } 上例程序的第一行進行帶參宏定義,用宏名 MAX表示條件表達式(ab)?a:b,形參 a,b均出現(xiàn)在條件表達式中。程序第七行 max=MAX(x,y)為宏調用,實參 x,y,將代換形參 a,b。宏展開后該語句為: max=(xy)?x:y。 用于計算 x,y中的大數(shù)。 2/10/2022 138 C語言程序設計 如果定義一個函數(shù)求兩數(shù)中的較大者的函數(shù) : define MAX(a,b) (ab)?a:b int fmax(int a,int b) { return (ab)?a:b。 } main(){ int x,y,max。 printf(input two numbers: )。 scanf(%d%d,amp。x,amp。y)。 max=MAX(x,y)。 printf(max=%d\n,max)。 max=fmax(x,y)。 printf(max=%d\n,max)。 } 2/10/2022 139 C語言程序設計 宏定義中的形參沒有類型之別,但函數(shù)中的形參有類型之別。 define MAX(a,b) (ab)?a:b main(){ int x,y,imax。 float m,n,fmax。 printf(input two integer numbers: )。 scanf(%d%d,amp。x,amp。y)。 imax=MAX(x,y)。 printf(“Imax=%d \n,imax)。 printf(input two float numbers: )。 scanf(%f%f,amp。m,amp。n)。 fmax=MAX(m,n)。 printf(“Fmax=%f \n,fmax)。 } 對宏定義中的形參既可以傳遞整數(shù),也可以傳遞實數(shù)。 2/10/2022 140 C語言程序設計 1. 帶參宏定義中,宏名和形參表之間不能有空格出現(xiàn)。 例如把: define MAX(a,b) (ab)?a:b 寫為: define MAX (a,b) (ab)?a:b 是錯誤的。 2. 在帶參宏定義中,形式參數(shù)不分配內(nèi)存單元,因此不必作類型定義。而宏調用中的實參有具體的值。要用它們?nèi)ゴ鷵Q形參,因此必須作類型說明。這是與函數(shù)中的情況不同的。在函數(shù)中,形參和實參是兩個不同的量,各有自己的作用域,調用時要把實參值賦予形參,進行“值傳遞”。而在帶參宏中,只是符號代換,不存在值傳遞的問題。 2/10/2022 141 C語言程序設計 3. 在宏定義中的形參是標識符,而宏調用中的實參可以是表達式。 define SQ(y) (y)*(y) main(){ int a,sq。 printf(input a number: )。 scanf(%d,amp。a)。 sq=SQ(a+1)。 printf(sq=%d\n,sq)。 } 宏與函數(shù)都可以作為程序模塊應用于模塊化程序設計之中,但它們各有特色: (1) 時空效率不相同。宏定義時要用宏體去替換宏名,往往使程序體積膨脹,加大了系統(tǒng)的存儲開銷。但它不像函數(shù)調用那樣要進行參數(shù)傳遞、保存現(xiàn)場、返回等操作,所以時間效率比函數(shù)高。 所以,通常對簡短的表達式,以及調用頻繁、要求快速響應的場合 (如實時系統(tǒng)中 ),采用宏比采用函數(shù)合適。 (2) 宏雖然可以帶有參數(shù),但可能產(chǎn)生函數(shù)調用所沒有的副作用。 宏定義過程中不像函數(shù)那樣要進行參數(shù)值的計算、傳遞及結果返回等操作;宏定義只是簡單的字符替換,不進行計算。因而一些過程是不能用宏代替函數(shù)的,如遞歸調用。也可能不適合某些計算。 include long square(int)。 int main(void) { int i=1。 while (i=5) printf(%1d\n, square(i++))。 return 0。 } long square(int n) { return(n*n)。 } /* 例 用宏計算平方 */ include define square(n) ((n)*(n)) int main(void) { int i=1。 while(i=5) printf (%ld\n,square(i++))。 }
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1