版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第13章編譯預(yù)處理13.1概述13.2宏定義13.3文件包含13.4條件編譯
13.1概述
在前面各章內(nèi)容中,曾多次使用過以“#”開頭的命令。如文件包含命令#include、宏定義命令#define等。在C語言程序設(shè)計中,這些以“#”開頭的命令一般放在函數(shù)之外,而且通常放在源文件的前面,被稱為預(yù)處理命令。
13.2宏定義
13.2.1無參宏定義
無參宏定義是用一個指定的標識符(名字)來代表一個字符串的,在實際軟件開發(fā)過程中有非常廣泛的應(yīng)用。
無參宏定義的一般形式可表示為:
#define標識符字符串
【例13-1】已知半徑,求對應(yīng)圓的周長、面積和球的體積。
解析:定義變量r表示圓的半徑,圓的周長、面積和體積分別用變量c,s,v表示,則程序源代碼可這樣來寫:圖13.1例13-1運行結(jié)果這種宏定義在大型程序開發(fā)過程中有諸多優(yōu)點:
(1)提高程序的可讀性。
(2)可以極大地方便程序的修改。
(3)用宏名來代替字符串,可以減少程序輸入過程中重復(fù)輸入的某些字符串。
1.宏定義替換表達式或字符串
【例13-2】宏替換實例。圖13.2例13-2運行結(jié)果
【例13-3】宏定義替換字符串的實例。圖13.3例13-3運行結(jié)果
2.用#undef宏定義作用域
【例13-4】宏定義作用域的實例。
3.宏名用引號括起來的情況
【例13-5】宏的使用實例。
4.宏定義允許嵌套
在宏定義的字符串中可以使用已經(jīng)定義的宏名。在宏展開時由預(yù)處理程序?qū)訉哟鷵Q。例如:
#definePI3.1415926
#defineSPI*y*y /*PI是已定義的宏名*/
語句:
printf(“%f”,S);
在宏代換后變?yōu)椋?/p>
printf("%f",3.1415926*y*y);
5.用宏定義表示數(shù)據(jù)類型
例如:
#defineSTUstructstu
在程序中可用STU作變量說明:
STUbody[5],*p;
#defineINTEGERint
在程序中即可用INTEGER作整型變量說明:
INTEGERa,b;13.2.2帶參宏定義
C語言允許宏定義時帶有參數(shù),我們將這種形式的宏定義稱為帶參宏定義。在宏定義中的參數(shù)稱為形式參數(shù),在宏調(diào)用中的參數(shù)稱為實際參數(shù)。
對帶參數(shù)的宏,在調(diào)用中不僅要進行宏展開,而且要用實參去代換形參。
帶參數(shù)的宏定義不是進行簡單的字符串置換,一般情況下還要進行參數(shù)置換,其通用的表達形式為:
#define宏名(形參表)字符串
1.帶參宏定義應(yīng)用示例
【例13-6】帶參宏實例。圖13.4例13-6運行結(jié)果
【例13-7】帶參宏實例1。圖13.5例13-7運行結(jié)果
【例13-8】帶參宏實例2。圖13.6例13-8運行結(jié)果
【例13-9】帶參宏實例3。圖13.7例13-9運行結(jié)果
【例13-10】帶參宏實例4。圖13.8例13-10運行結(jié)果
2.帶參的宏定義和帶參函數(shù)的區(qū)別
【例13-11】函數(shù)處理實例。圖13.9例13-11運行結(jié)果
【例13-12】宏處理實例。圖13.10例13-12運行結(jié)果
【例13-13】宏定義實例。圖13.11例13-13運行結(jié)果
13.3文件包含
文件包含是C語言預(yù)處理程序的另一個重要功能。它指一個源文件可以將另外一個源文件全部內(nèi)容包含進來,也就是將其它文件包含到本文件之中,C語言提供了“#include”命令來實現(xiàn)文件包含。文件包含命令行的一般形式為:
#include“文件名”
在前面我們已多次用此命令包含過庫函數(shù)的頭文件。例如:
#include“stdio.h”
#include"math.h"圖13.12文件包含原理圖
【例13-14】將格式宏做成頭文件,把它包含到用戶程序中。
(1)將格式宏制作成頭文件format.h。
(2)將頭文件format.h包含到主文件中。
13.4條件編譯
(1)第一種形式:它的功能是:如果標識符已被#define命令定義過,則對程序段1進行編譯;否則對程序段2進行編譯。如果沒有程序段2(它為空),本格式中的#else可以沒有,即可以寫為:
#ifdef標識符
程序段
#endif
【例13-15】條件編譯實例。圖13.13例13-15的運行結(jié)果
(2)第二種形式:
#ifndef標識符
程序段1
#else
程序段2
#endif
(3)第三種形式:
#if常量表達式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025重慶忠縣衛(wèi)生事業(yè)單位面向應(yīng)屆生考核招聘14人備考筆試試題及答案解析
- 2025江蘇蘇州工業(yè)園區(qū)勝浦實驗小學(xué)教學(xué)輔助人員招聘1人備考考試題庫及答案解析
- 古藺縣教育和體育局 古藺縣人力資源和社會保障局2025年11月公開考核招聘教師參考筆試題庫及答案解析
- 2025新疆阿泰勒查干郭勒鄉(xiāng)薩爾布拉克村招聘就業(yè)見習(xí)人員2人模擬筆試試題及答案解析
- 2025西藏林芝市紅十字會招聘輔助性崗位工作人員2人備考考試試題及答案解析
- 2025中國科學(xué)院微生物研究所病原微生物與免疫學(xué)重點實驗室胡海濤研究團組招聘備考考試題庫及答案解析
- 2025年聊城公開招聘社工(4人)備考筆試題庫及答案解析
- 2025年福建莆田市中央儲備糧莆田直屬庫有限公司勞務(wù)外包人員招聘2人備考筆試題庫及答案解析
- 2025年合肥市肥東縣人民政府行政復(fù)議委員會面向社會招聘非常任委員的備考題庫及參考答案詳解
- 2025年紹興銀行社會招聘12人備考題庫完整參考答案詳解
- 12J201平屋面建筑構(gòu)造圖集(完整版)
- 光伏電站試運行期間運行報告1
- 譯林版三年級英語下冊Unit5《How old are you?》單元檢測卷(含答案)
- XF-T 3004-2020 汽車加油加氣站消防安全管理
- 行為金融學(xué)課件
- 短視頻的拍攝與剪輯
- 單軸仿形銑床設(shè)計
- 全口義齒人工牙的選擇與排列 28-全口義齒人工牙的選擇與排列(本科終稿)
- 低壓電纜敷設(shè)方案設(shè)計
- 原發(fā)性肝癌病人的護理原發(fā)性肝癌病人的護理
- 新能源有限公司光伏電站現(xiàn)場應(yīng)急處置方案匯編
評論
0/150
提交評論