![C++高級(jí)程序設(shè)計(jì):第06章 編譯預(yù)處理_第1頁(yè)](http://file4.renrendoc.com/view/b7b0dc1d9a6e3de6587d6186ecc614b2/b7b0dc1d9a6e3de6587d6186ecc614b21.gif)
![C++高級(jí)程序設(shè)計(jì):第06章 編譯預(yù)處理_第2頁(yè)](http://file4.renrendoc.com/view/b7b0dc1d9a6e3de6587d6186ecc614b2/b7b0dc1d9a6e3de6587d6186ecc614b22.gif)
![C++高級(jí)程序設(shè)計(jì):第06章 編譯預(yù)處理_第3頁(yè)](http://file4.renrendoc.com/view/b7b0dc1d9a6e3de6587d6186ecc614b2/b7b0dc1d9a6e3de6587d6186ecc614b23.gif)
![C++高級(jí)程序設(shè)計(jì):第06章 編譯預(yù)處理_第4頁(yè)](http://file4.renrendoc.com/view/b7b0dc1d9a6e3de6587d6186ecc614b2/b7b0dc1d9a6e3de6587d6186ecc614b24.gif)
![C++高級(jí)程序設(shè)計(jì):第06章 編譯預(yù)處理_第5頁(yè)](http://file4.renrendoc.com/view/b7b0dc1d9a6e3de6587d6186ecc614b2/b7b0dc1d9a6e3de6587d6186ecc614b25.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章編譯預(yù)處理本章要點(diǎn)了解帶參的宏定義和不帶參的宏定義了解文件包含及使用方法自學(xué)條件編譯在程序設(shè)計(jì)中的使用主要內(nèi)容概述宏定義文件包含條件編譯(自學(xué))編譯預(yù)處理編譯預(yù)處理:編譯器在對(duì)源程序正式編譯之前,對(duì)源程序進(jìn)行的文字上的處理工作。預(yù)處理1預(yù)處理2編譯
f.cpp
f'.cpp
f''.cpp內(nèi)容變化內(nèi)容變化連接
f.obj
f.exe“預(yù)處理”命令行以“#”開頭末尾不加“;”可以放在程序的任何位置編譯預(yù)處理三種預(yù)處理宏定義文件包含條件編譯(自學(xué))不帶參數(shù)的宏定義#definePI3.1415926標(biāo)識(shí)符字符串不帶參數(shù)的宏定義例#include<iostream.h>//li0601.cpp不帶參數(shù)的宏定義#definePI3.1415926voidmain(){ doublel,s,r,v;
cout<<"inputradius:";
cin>>r; l=2.0*PI*r; s=PI*r*r; v=4.0/3*PI*r*r*r;
cout<<"周長(zhǎng)為:"<<l<<"\n面積為:"<<s<<"\n體積為:"<<v<<'\n';}l=2.0*3.1415926*r;s=3.1415926*r*r;v=4.0/3*3.1415926*r*r*r;宏代換后說明一般用大寫字母表示宏名減少程序中的重復(fù)書寫,提高通用性
如:#definearray_size100
int
array[array_size];便于修改只作簡(jiǎn)單置換,不作任何計(jì)算,不作語(yǔ)法檢查不是C++語(yǔ)句,不在行末加“;”有效范圍:定義命令之后到本源文件結(jié)束#undef終止宏定義的作用域例:#definePI3.1415926main(){…}#undefPIf1()...PI的有效范圍雙引號(hào)中的字符,與宏名相同也不置換說明宏定義時(shí),可引用已定義的宏名#include<iostream.h>//li0602.cpp#defineR5.0#definePI3.1415926#defineL2*PI*R#defineSPI*R*Rvoidmain(){ cout<<"L="<<L<<"\nS="<<S<<endl;}不置換帶參數(shù)的宏定義格式:#define宏名(參數(shù)表)字符串例
#defines(a,b)a*b … area=s(2,3);帶參數(shù)的宏定義例#include<iostream.h>//bc0601.cpp#definePI3.1415926#defineS(r)PI*r*rvoidmain(){ floata,area; a=3.6; area=S(a);
cout<<"r="<<a<<'\n'<<"area="<<area<<endl;}如:area=s(a+b);
則area=PI*a+b*a+b顯然與原意不符如何改?#defines(r)PI*(r)*(r)注意:宏定義時(shí),宏名與帶參數(shù)的括號(hào)間不應(yīng)加空格#defines(r)PI*r*r此例將s定義為(r)PI*r*r注意①可以嵌套定義宏例:#defineMAX2(a,b)((a)>(b)?(a):(b))#defineMAX4(a,b,c,d)MAX2(MAX2(a,b),MAX2(c,d))√②不允許遞歸定義例:
#definefac(n)n<=1?1:n*fac(n-1)×文件包含作用:讓編譯預(yù)處理器把另一個(gè)源文件嵌入(包含)到當(dāng)前源文件中的該指令處。
#include"file2.h"A
B
file1.cppfile2.h
A
B
file1'.cpp包含處理一般形式文件包含命令格式如下:
①#include"文件名"或
②#include<文件名>區(qū)別:設(shè)用戶源程序在文件夾D:\VC中,系統(tǒng)規(guī)定的標(biāo)準(zhǔn)頭文件在下述文件夾中(標(biāo)準(zhǔn)包含路徑)
C:\ProgramFiles\MicrosoftVisualStudio\VC98\Include則:對(duì)①編譯器先在D:\VC
文件夾中查找要包含的頭文件,
若找不到,再到標(biāo)準(zhǔn)包含路徑下查找該文件,找到后,將該頭文件插入到用戶源文件頭部。對(duì)②編譯器直接到標(biāo)準(zhǔn)包含路徑下查找該文件。C:\ProgramFiles\MicrosoftVisualStudio\VC98\IncludeC:\ProgramFiles\MicrosoftVisualStudio\VC98\Lib若包含系統(tǒng)提供的頭文件,則用②較好若包含自己寫的文件,則用①較好包含處理的例子intx=200,y=100;floatx1=25.6,x2=28.9;file1.h#include"file1.h"#include<iostream.h>voidmain(void){cout<<x<<'\t'<<y<<'\n';
cout<<x1<<'\t'<<x2<<'\n';}file2.cppintx=200,y=100;floatx1=25.6,x2=28.9;#include<iostream.h>voidmain(void){cout<<x<<'\t'<<y<<'\n';
cout<<x1<<'\t'<<x2<<'\n';}file2'.cpp包含處理后編譯器對(duì)該文件,進(jìn)行編譯連接。一條文件包含命令只能包含一個(gè)文件條件編譯的幾種形式形式1 #ifdef
標(biāo)識(shí)符程序段1 [#else
程序段2]#endif可以沒有當(dāng)標(biāo)識(shí)符已被定義過(一般是用#define定義),則編譯程序段1條件編譯的幾種形式形式2 #ifndef
標(biāo)識(shí)符程序段1[#else
程序段2]#endif可以沒有意義與形式1相反未定義幾種形式形式3#if表達(dá)式/*或#if(表達(dá)式)*/程序段1[#else程序段2]#endif例#include<iostream.h>#defineLETTER0voidmain(){charc; do {cin.get(c); #ifLETTER if(c>='a'&&c<='z') c=c-32; #else
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 礦產(chǎn)品供貨協(xié)議合同
- 有車輛的離婚協(xié)議書
- 北京商品房認(rèn)購(gòu)協(xié)議書
- 農(nóng)業(yè)種植技術(shù)指導(dǎo)書
- 純技術(shù)入股合作的協(xié)議書
- 湖南離婚協(xié)議書年
- 三農(nóng)村土地整治與開發(fā)方案
- 托管班合作協(xié)議書
- 股權(quán)融資合同書
- 標(biāo)準(zhǔn)汽車租賃合同協(xié)議
- 第五講鑄牢中華民族共同體意識(shí)-2024年形勢(shì)與政策
- 中華人民共和國(guó)學(xué)前教育法
- 2024年貴州公務(wù)員考試申論試題(B卷)
- 三年級(jí)(下冊(cè))西師版數(shù)學(xué)全冊(cè)重點(diǎn)知識(shí)點(diǎn)
- 期末練習(xí)卷(試題)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)滬教版
- 2025年公務(wù)員考試申論試題與參考答案
- 抑郁癥課件教學(xué)課件
- 關(guān)于消防安全評(píng)估設(shè)備操作說明詳解
- 2025年高考作文專練(25道真題+審題立意+范文)- 2025年高考語(yǔ)文作文備考總復(fù)習(xí)
- 中國(guó)高血壓防治指南(2024年修訂版)要點(diǎn)解讀
評(píng)論
0/150
提交評(píng)論