




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言程序設(shè)計(jì)第7章 預(yù)處理命令&理解宏定義的概念&掌握不帶參數(shù)、帶參數(shù)的宏定義&理解文件包含&了解條件編譯C語(yǔ)言程序設(shè)計(jì)概述&所謂預(yù)處理是指在進(jìn)行編譯前,對(duì)源程序預(yù)先添加和替換一些信息,以便編譯程序能夠正常的編譯。&預(yù)處理是C語(yǔ)言的一項(xiàng)重要功能,它由預(yù)處理器完成。當(dāng)對(duì)一個(gè)源文件進(jìn)行編譯時(shí),系統(tǒng)將自動(dòng)引用預(yù)處理程序?qū)υ闯绦蛑械念A(yù)處理部分作處理,處理完畢自動(dòng)進(jìn)入對(duì)源程序的編譯。C語(yǔ)言程序設(shè)計(jì)&預(yù)處理8種類v宏定義 #definev文件包含 #includev條件編譯 #if-#else-#endif等8格式:v“#”開頭v占單獨(dú)書寫行v語(yǔ)句
2、尾不加分號(hào)C語(yǔ)言程序設(shè)計(jì)宏定義&在C語(yǔ)言源程序中允許用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)字符串,稱為“宏”(Macro)。&被定義為“宏”的標(biāo)識(shí)符稱為“宏”名。在編譯預(yù)處理時(shí),對(duì)程序中所有的“宏”名,都用宏定義中的字符串去代換,這稱為宏代換或宏調(diào)用,也可以稱為宏展開。&在C語(yǔ)言中,“宏”分為有參數(shù)和無(wú)參數(shù)兩種C語(yǔ)言程序設(shè)計(jì)如 if(x=YES) printf(“correct!n”); else if (x=NO) printf(“error!n”);展開后: if(x=1) printf(“correct!n”); else if (x=0) printf(“error!n”);&
3、amp;宏定義8不帶參數(shù)宏定義v一般形式: #define 宏名 宏體 v功能:用指定標(biāo)識(shí)符(宏名)代替字符序列(宏體)v宏展開:預(yù)編譯時(shí),用宏體替換宏名-不作語(yǔ)法檢查如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”);v定義位置:任意(一般在函數(shù)外面)v作用域:從定義命令到文件結(jié)束v#undef可終止宏名作用域 格式: #undef 宏名例 #define YES 1 main() . #undef YES #define YES 0 max() . YES原作用域YES新作用
4、域v宏定義可嵌套,不能遞歸例 #define MAX MAX+10 ()v引號(hào)中的內(nèi)容與宏名相同也不置換例 #define PI 3.14159 printf(“2*PI=%fn”,PI*2);宏展開:printf(“2*PI=%fn”,3.14159*2);v宏定義中使用必要的括號(hào)()例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2;宏展開:var= 80+40 *2;( )( )例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2;宏展開:var= 80+40 *2;C語(yǔ)
5、言程序設(shè)計(jì)8帶參數(shù)宏定義v一般形式: #define 宏名(參數(shù)表) 宏體例 #define S (r) PI*r*r相當(dāng)于定義了不帶參宏S,代表字符串“(r) PI*r*r” v宏展開:形參用實(shí)參換,其它字符保留v宏體及各形參外一般應(yīng)加括號(hào)()例 #define S(a,b) a*b . area=S(3,2);宏展開: area=3*2;不能加空格例 #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);C語(yǔ)言程序設(shè)計(jì)#define
6、 MAX(x,y) (x)(y)?(x):(y) .main() int a,b,c,d,t; . t=MAX(a+b,c+d); 宏展開:t=(a+b)(c+d)?(a+b):(c+d);int max(int x,int y) return(xy?x:y);main() int a,b,c,d,t; . t=max(a+b,c+d); 例 用宏定義和函數(shù)實(shí)現(xiàn)同樣的功能C語(yǔ)言程序設(shè)計(jì)v帶參的宏與函數(shù)區(qū)別帶參宏函數(shù)處理過(guò)程不分配內(nèi)存簡(jiǎn)單的字符置換分配內(nèi)存先求實(shí)參值,再代入形參處理時(shí)間編譯時(shí)程序運(yùn)行時(shí)參數(shù)類型無(wú)類型問(wèn)題定義實(shí)參,形參類型程序長(zhǎng)度變長(zhǎng)不變運(yùn)行速度不占運(yùn)行時(shí)間調(diào)用和返回占時(shí)間C語(yǔ)言程
7、序設(shè)計(jì)&文件包含8功能:一個(gè)源文件可將另一個(gè)源文件的內(nèi)容全部包含進(jìn)來(lái)8一般形式: #include “文件名” 或 #include #include “file2.c”file1.cfile2.cfile1.cfile2.cABA8處理過(guò)程:預(yù)編譯時(shí),用被包含文件的內(nèi)容取代該預(yù)處理命令,再對(duì)“包含”后的文件作一個(gè)源文件編譯 直接按標(biāo)準(zhǔn)目錄搜索“” 先在當(dāng)前目錄搜索,再搜索標(biāo)準(zhǔn)目錄可指定路徑C語(yǔ)言程序設(shè)計(jì)8被包含文件內(nèi)容v源文件(*.c)v頭文件(*.h)宏定義數(shù)據(jù)結(jié)構(gòu)定義函數(shù)說(shuō)明等8文件包含可嵌套#include “file2.c”file1.cAfile3.cC#include “
8、file3.c”file2.c Bfile1.cAfile3.cfile2.cC語(yǔ)言程序設(shè)計(jì)例 文件包含舉例/* powers.h */#define sqr(x) (x)*(x)#define cube(x) (x)*(x)*(x)#define quad(x) (x)*(x)*(x)*(x)#include #include powers.h#define MAX_POWER 10void main() int n; printf(numbert exp2t exp3t exp4n); printf(-t-t-t-n); for(n=1;n=MAX_POWER;n+) printf(%2dt %3dt %4dt %5dn,n,sqr(n),cube(n),quad(n);C語(yǔ)言程序設(shè)計(jì)條件編譯&可以按不同的條件去編譯不同的程序部分,因而產(chǎn)生不同的目標(biāo)代碼文件。這對(duì)于程序的移植和調(diào)試是很有用的。條件編譯有兩種形式: (1) #ifdef 標(biāo)識(shí)符 程序段1 #else 程序段2 #endif12如果標(biāo)識(shí)符已被 #define命令定義過(guò)則對(duì)程序段1進(jìn)行編譯;否則對(duì)程序段2進(jìn)行編譯。若沒有程序段2(它為空),格式中的#else可以省略C語(yǔ)言程序設(shè)計(jì)條件編譯(2) 第二種形式: #ifndef 標(biāo)識(shí)符 程序段1 #else 程序段2 #endif13若
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 項(xiàng)目工程師培訓(xùn)課件
- 油田開發(fā)項(xiàng)目建議書(參考)
- 2025年壓力表合作協(xié)議書
- 2025年智能分揀系統(tǒng)項(xiàng)目發(fā)展計(jì)劃
- 2025年預(yù)防用生物制品項(xiàng)目發(fā)展計(jì)劃
- 五年級(jí)上冊(cè)數(shù)學(xué)教案 第七單元
- 2025年慣性組合項(xiàng)目合作計(jì)劃書
- 2025年商業(yè)照明燈具項(xiàng)目發(fā)展計(jì)劃
- 2025年輕質(zhì)建筑材料及制品合作協(xié)議書
- 2025年中高壓陰極電容鋁箔合作協(xié)議書
- 2025年錨栓市場(chǎng)發(fā)展現(xiàn)狀
- 養(yǎng)豬場(chǎng)建設(shè)項(xiàng)目可行性研究報(bào)告(模板范文)
- 2025年四級(jí)中式烹調(diào)師(中級(jí))職業(yè)技能鑒定參考試題庫(kù)(含答案)
- 夜間作業(yè)安全培訓(xùn)培訓(xùn)資料
- 中藥知識(shí)講解課件
- 施工資源需求計(jì)劃與調(diào)配策略
- 預(yù)制箱梁首件工程施工總結(jié)
- 2024-2025學(xué)年人教版高二化學(xué)選擇性必修3配套課件 基礎(chǔ)課時(shí)4 有機(jī)物分子式和分子結(jié)構(gòu)的確定
- 湖南省岳陽(yáng)市2024-2025學(xué)年小升初模擬數(shù)學(xué)測(cè)試卷含解析
- 寵物店店員的工作職責(zé)與服務(wù)理念
- 高中家長(zhǎng)會(huì) 高一下學(xué)期期末家長(zhǎng)會(huì)課件
評(píng)論
0/150
提交評(píng)論