已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
27 03 2020 1 第九章預(yù)處理命令 編譯預(yù)處理 在源程序文件中 加入 編譯預(yù)處理命令 使編譯程序在對(duì)源程序進(jìn)行通常的編譯 包括詞法分析 語(yǔ)法分析 代碼生成 代碼優(yōu)化 之前 先對(duì)這些命令進(jìn)行預(yù)處理 然后將預(yù)處理的結(jié)果和源程序一起再進(jìn)行通常的編譯處理 以得到目標(biāo)代碼 OBJ文件 C提供的編譯預(yù)處理命令宏命令 Macro 文件包含命令 include 條件編譯命令這些命令均以 開(kāi)頭 以區(qū)別于語(yǔ)句 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 2 9 1宏 Macro 定義 一 不帶參數(shù)的宏一般形式 define標(biāo)識(shí)符字符串如 definePI3 1415926作用 用標(biāo)識(shí)符 稱為 宏名 PI代替字符串 3 1415926 在預(yù)編譯時(shí) 將源程序中出現(xiàn)的宏名PI替換為字符串 3 1415926 這一替換過(guò)程稱為 宏展開(kāi) define 宏定義命令 undef 終止宏定義命令 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 3 例 PI3 1415926main floatl s r v printf inputradius scanf f 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 4 關(guān)于宏定義的說(shuō)明 1 一般宏名用大寫(xiě)字母表示 變量名一般用小寫(xiě)字母 2 使用宏可以提高程序的可讀性和可移植性 如上述程序中 多處需要使用 值 用宏名既便于修改又意義明確 3 宏定義是用宏名代替字符串 宏擴(kuò)展時(shí)僅作簡(jiǎn)單替換 不檢查語(yǔ)法 語(yǔ)法檢查在編譯時(shí)進(jìn)行 4 宏定義不是C語(yǔ)句 后面不能有分號(hào) 如果加入分號(hào) 則連分號(hào)一起替換 如 definePI3 1415926 area P r r 在宏擴(kuò)展后成為 area 3 1315926 r r 結(jié)果 在編譯時(shí)出現(xiàn)語(yǔ)法錯(cuò)誤 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 5 5 通常把 define命令放在一個(gè)文件的開(kāi)頭 使其在本文件全部有效 define定義的宏僅在本文件有效 在其它文件中無(wú)效 這與全局變量不同 6 宏定義終止命令 undef結(jié)束先前定義的宏名 defineG9 8main undefG 取消G的意義 f1 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 6 7 宏定義中可以引用已定義的宏名 例8 2 defineR3 0 definePI3 1415926 deinfeL2 PI R defineSPI R Rmain printf L f nS f n L S 8 對(duì)程序中用雙引號(hào)括起來(lái)的字符串 即使與宏名相同 也不替換 例如上例的printf語(yǔ)句中 雙引號(hào)括起來(lái)L和S不被替換 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 7 二 帶參數(shù)的宏一般形式 define宏名 參數(shù)表 字符串帶參數(shù)的宏在展開(kāi)時(shí) 不是進(jìn)行簡(jiǎn)單的字符串替換 而是進(jìn)行參數(shù)替換 例 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 8 例 definePI3 1415926 defineS r PI r rmain floata area a 3 6 area S a printf r f narea f n a area 說(shuō)明 帶參數(shù)的宏展開(kāi)時(shí) 用實(shí)參字符串替換形參字符串 注意可能發(fā)生的錯(cuò)誤 比較好的辦法是宏定義的形參加括號(hào) 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 9 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 10 例 返回多個(gè)值的宏定義 definePI3 1415926 defineCIRCLE R L S V L 2 PI R S PI R R V 4 3 PI R R Rmain floatr l s v 半徑 圓周長(zhǎng) 圓面積 球體積 scanf f 輸出結(jié)果 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 11 9 2文件包含 include 文件包含命令的一般格式是 include 文件名 作用 預(yù)處理時(shí) 把 文件名 指定的文件內(nèi)容復(fù)制到本文件 再對(duì)合并后的文件進(jìn)行編譯 例 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 12 在文件中 有文件包含命令 include 預(yù)處理時(shí) 先把的內(nèi)容復(fù)制到文件 再對(duì)進(jìn)行編譯 從理論上說(shuō) include命令可以包含任何類型的文件 只要這些文件的內(nèi)容被擴(kuò)展后符合C語(yǔ)言語(yǔ)法 一般 include命令用于包含擴(kuò)展名為 h的 頭文件 如stdio h string h math h 在這些文件中 一般定義符號(hào)常量 宏 或聲明函數(shù)原型 2 文件 include print format h main inta b c d charstring CHINA a 1 b 2 c 3 d 4 PR D1 a PR D2 a b PR D3 a b c PR D4 a b c d PR S string 程序員也可以把自己定義的符號(hào)常量 宏 或函數(shù)原型放在頭文件中 用 include命令包含這些頭文件 1 文件print format h definePRprintf defineNL n defineD d defineD1DNL defineD2DDNL defineD3DDDNL defineD4DDDDNL defineS s 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 13 說(shuō)明 1 一個(gè)include命令只能指定一個(gè)被包含文件 如果要包含n個(gè)文件 用n個(gè)Include命令 2 include命令的文件名 可以使用兩種括號(hào) include 先在引用被包含文件的目錄查找文件 若沒(méi)有 再到系統(tǒng)指定的目錄查找 include僅在系統(tǒng)指定的目錄查找文件 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 14 9 3條件編譯 預(yù)處理程序提供了條件編譯的功能 可以按不同的條件去編譯不同的程序部分 因而產(chǎn)生不同的目標(biāo)代碼文件 這對(duì)于程序的移植和調(diào)試是很有用的 條件編譯有三種形式 下面分別介紹 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 15 1 第一種形式 ifdef標(biāo)識(shí)符程序段1 else程序段2 endif它的功能是 如果標(biāo)識(shí)符已被 define命令定義過(guò)則對(duì)程序段1進(jìn)行編譯 否則對(duì)程序段2進(jìn)行編譯 如果沒(méi)有程序段2 它為空 本格式中的 else可以沒(méi)有 即可以寫(xiě)為 ifdef標(biāo)識(shí)符程序段 endif 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 16 2 第二種形式 ifndef標(biāo)識(shí)符程序段1 else程序段2 endif與第一種形式的區(qū)別是將 ifdef 改為 ifndef 它的功能是 如果標(biāo)識(shí)符未被 define命令定義過(guò)則對(duì)程序段1進(jìn)行編譯 否則對(duì)程序段2進(jìn)行編譯 這與第一種形式的功能正相反 27 03 2020 荊州職
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版影視制作與發(fā)行合同
- 美業(yè)門(mén)店培訓(xùn)課程設(shè)計(jì)
- 英語(yǔ)加國(guó)學(xué)課程設(shè)計(jì)理念
- 感覺(jué)統(tǒng)合課程設(shè)計(jì)大班
- 油畫(huà)初學(xué)者 課程設(shè)計(jì)
- 2024政法干警考試復(fù)習(xí)資料
- 系統(tǒng)動(dòng)力學(xué)課程設(shè)計(jì)總結(jié)
- 深圳市政府投資交通建設(shè)項(xiàng)目管理模式-第二冊(cè)
- 大班社會(huì)簽到課程設(shè)計(jì)
- 2024年羽絨家紡銷售崗位職責(zé)(共8篇)
- 2024年6月浙江省高考?xì)v史試卷(真題+答案)
- 住友(SWS)汽車(chē)連接器(Connectors)產(chǎn)品配套手冊(cè)
- 辦公樓室內(nèi)裝飾工程施工設(shè)計(jì)方案技術(shù)標(biāo)范本
- 2023年香港華夏杯六年級(jí)競(jìng)賽初賽數(shù)學(xué)試卷
- 高中數(shù)學(xué)放縮法
- 上海市閔行區(qū)2024-2025學(xué)年八年級(jí)(上)期末物理試卷(解析版)
- 2024年國(guó)考行測(cè)真題-言語(yǔ)理解與表達(dá)真題及完整答案1套
- 人教版三年級(jí)上冊(cè)數(shù)學(xué)期末測(cè)試卷可打印
- 醫(yī)療高級(jí)職稱評(píng)審論文答辯
- 設(shè)計(jì)服務(wù)保障措施方案
- 軟件測(cè)試方案模板(完整版)
評(píng)論
0/150
提交評(píng)論