




已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
27 03 2020 1 第九章預(yù)處理命令 編譯預(yù)處理 在源程序文件中 加入 編譯預(yù)處理命令 使編譯程序在對(duì)源程序進(jìn)行通常的編譯 包括詞法分析 語法分析 代碼生成 代碼優(yōu)化 之前 先對(duì)這些命令進(jìn)行預(yù)處理 然后將預(yù)處理的結(jié)果和源程序一起再進(jìn)行通常的編譯處理 以得到目標(biāo)代碼 OBJ文件 C提供的編譯預(yù)處理命令宏命令 Macro 文件包含命令 include 條件編譯命令這些命令均以 開頭 以區(qū)別于語句 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 這一替換過程稱為 宏展開 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)于宏定義的說明 1 一般宏名用大寫字母表示 變量名一般用小寫字母 2 使用宏可以提高程序的可讀性和可移植性 如上述程序中 多處需要使用 值 用宏名既便于修改又意義明確 3 宏定義是用宏名代替字符串 宏擴(kuò)展時(shí)僅作簡單替換 不檢查語法 語法檢查在編譯時(shí)進(jìn)行 4 宏定義不是C語句 后面不能有分號(hào) 如果加入分號(hào) 則連分號(hào)一起替換 如 definePI3 1415926 area P r r 在宏擴(kuò)展后成為 area 3 1315926 r r 結(jié)果 在編譯時(shí)出現(xiàn)語法錯(cuò)誤 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 5 5 通常把 define命令放在一個(gè)文件的開頭 使其在本文件全部有效 define定義的宏僅在本文件有效 在其它文件中無效 這與全局變量不同 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)括起來的字符串 即使與宏名相同 也不替換 例如上例的printf語句中 雙引號(hào)括起來L和S不被替換 27 03 2020 荊州職業(yè)技術(shù)學(xué)院信息技術(shù)系 7 二 帶參數(shù)的宏一般形式 define宏名 參數(shù)表 字符串帶參數(shù)的宏在展開時(shí) 不是進(jì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 說明 帶參數(shù)的宏展開時(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 半徑 圓周長 圓面積 球體積 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)行編譯 從理論上說 include命令可以包含任何類型的文件 只要這些文件的內(nèi)容被擴(kuò)展后符合C語言語法 一般 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 說明 1 一個(gè)include命令只能指定一個(gè)被包含文件 如果要包含n個(gè)文件 用n個(gè)Include命令 2 include命令的文件名 可以使用兩種括號(hào) include 先在引用被包含文件的目錄查找文件 若沒有 再到系統(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命令定義過則對(duì)程序段1進(jìn)行編譯 否則對(duì)程序段2進(jìn)行編譯 如果沒有程序段2 它為空 本格式中的 else可以沒有 即可以寫為 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命令定義過則對(duì)程序段1進(jìn)行編譯 否則對(duì)程序段2進(jìn)行編譯 這與第一種形式的功能正相反 27 03 2020 荊州職
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 版企業(yè)培訓(xùn)合作合同
- 運(yùn)動(dòng)自行車品牌代理合同
- 新疆沙雅縣市級(jí)名校2025屆初三下學(xué)期英語試題分類匯編含答案
- 五金制品鋸類購銷協(xié)議
- 小型企業(yè)勞動(dòng)合同模板
- 土地使用權(quán)買賣合同模板范本
- 商場店鋪?zhàn)赓U合同范本
- 冀教版小學(xué)數(shù)學(xué)六年級(jí)下冊(cè)小升初畢業(yè)會(huì)考模擬卷(三) (含答案)
- 2025年云南省曲靖市沾益區(qū)民族中學(xué)中考?xì)v史一模試卷(含答案)
- 智能設(shè)備服務(wù)合同
- 車間排產(chǎn)計(jì)劃培訓(xùn)
- 無菌醫(yī)療器械培訓(xùn)課件
- 消防安全管理規(guī)定模版(2篇)
- 探究中醫(yī)藥知識(shí)圖譜-洞察分析
- 六年級(jí)工程問題30道應(yīng)用題
- 08D800-6 民用建筑電氣設(shè)計(jì)與施工-室內(nèi)布線
- 2024年廣西高考生物試卷真題(含答案)
- 2024年資格考試-良好農(nóng)業(yè)規(guī)范認(rèn)證檢查員考試近5年真題附答案
- 2024-2025學(xué)年小學(xué)科學(xué)六年級(jí)下冊(cè)湘科版(2024)教學(xué)設(shè)計(jì)合集
- 建筑施工安全檢查標(biāo)準(zhǔn)JGJ59-2011
- 職業(yè)生涯人物訪談報(bào)告
評(píng)論
0/150
提交評(píng)論