




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、編譯預處理編譯預處理編譯預處理編譯預處理文件包含文件包含宏定義宏定義無參無參有參有參條件編譯條件編譯程序設計舉例程序設計舉例C C語言程序設計語言程序設計簡介簡介預處理預處理(preprocessing)在實施代碼轉換之前進行。在實施代碼轉換之前進行。包括:包括:包含其它文件包含其它文件定義宏定義宏有條件的編譯程序代碼有條件的編譯程序代碼預處理命令預處理命令(preprocessor directive)的格式的格式以以#開頭的一行(可以占多行)開頭的一行(可以占多行)#前面只能出現空白符前面只能出現空白符編譯預處理編譯預處理文件包含文件包含#include把所包含的文件的內容放到指令所在的地
2、方。把所包含的文件的內容放到指令所在的地方。兩種形式:兩種形式:#include 只在指定存放頭文件的目錄下(只在指定存放頭文件的目錄下(IDE的的include子目錄下)查找該文件。子目錄下)查找該文件。#include filename“ 首先在使用文件包含命令的源文件所在目錄下查找該文件;首先在使用文件包含命令的源文件所在目錄下查找該文件; 若未找到,再到指定存放頭文件的目錄下去查找。若未找到,再到指定存放頭文件的目錄下去查找。好處:好處:當許多程序中需要用到一些共同的常量、數據等資料時,可以把這當許多程序中需要用到一些共同的常量、數據等資料時,可以把這些共同的東西寫在以些共同的東西寫在
3、以.h作為擴展名的頭文件中;作為擴展名的頭文件中;如果哪個程序需要用時,就可用文件包含命令把它們包含進來,省如果哪個程序需要用時,就可用文件包含命令把它們包含進來,省去了重復定義的麻煩。去了重復定義的麻煩。編譯預處理編譯預處理文件包含文件包含#include使用說明:使用說明:一個一個#include命令只能指定一個被包含文件,若有多個文件要包含,命令只能指定一個被包含文件,若有多個文件要包含,則需要用多個則需要用多個#include命令。命令。文件包含允許嵌套,即在一個被包含文件中又可以包含另一個文件。文件包含允許嵌套,即在一個被包含文件中又可以包含另一個文件。文件包含命令通常包含的文件是頭
4、文件,即后綴是文件包含命令通常包含的文件是頭文件,即后綴是.h的文件,也可的文件,也可以包含其他的源文件,例如,可包含以包含其他的源文件,例如,可包含.c文件。文件。使用文件包含命令可使多個源文件合并成一個源程序后進行編譯和使用文件包含命令可使多個源文件合并成一個源程序后進行編譯和運行。運行。編譯預處理編譯預處理宏定義宏定義#define用一個標識符來表示一個字符串,稱為用一個標識符來表示一個字符串,稱為“宏宏”。被定義為被定義為“宏宏”的標識符稱為的標識符稱為“宏名宏名”。在編譯預處理時,對程序中所有出現的在編譯預處理時,對程序中所有出現的“宏名宏名”,都用宏,都用宏定義中的字符串去代換,這
5、稱為定義中的字符串去代換,這稱為“宏代換宏代換”或或“宏展開宏展開”。包括:包括:不帶參數的宏定義不帶參數的宏定義帶參數的宏定義帶參數的宏定義編譯預處理編譯預處理宏定義宏定義無參數的宏定義無參數的宏定義格式:格式:#define 舉例:舉例:說明:說明:宏定義一般寫在程序的開頭。宏定義一般寫在程序的開頭。宏名的命名規則同變量名,一般習慣用大寫字母,以便與變量區別,宏名的命名規則同變量名,一般習慣用大寫字母,以便與變量區別,但也允許用小寫字母。宏名的前后應有空格,以便準確地辨認宏名。但也允許用小寫字母。宏名的前后應有空格,以便準確地辨認宏名。宏定義必須寫在函數之外,宏名的有效范圍是從宏定義開始到
6、本源宏定義必須寫在函數之外,宏名的有效范圍是從宏定義開始到本源程序文件結束,或遇到預處理命令程序文件結束,或遇到預處理命令#undef時止。時止。編譯預處理編譯預處理#define PI 3.14宏定義宏定義無參數的宏定義無參數的宏定義說明:說明:宏定義不但可以定義常量,還可以定義宏定義不但可以定義常量,還可以定義C語句和表達式等。語句和表達式等。宏定義允許嵌套。宏定義允許嵌套。宏代換只是指定字符串替換宏名的簡單替換,不做任何語法檢查。宏代換只是指定字符串替換宏名的簡單替換,不做任何語法檢查。如有錯誤,只能在編譯已被宏展開后的源程序時發現。如有錯誤,只能在編譯已被宏展開后的源程序時發現。宏定義
7、是專門用于預處理命令的一個專用名詞,只作字符替換,不宏定義是專門用于預處理命令的一個專用名詞,只作字符替換,不分配內存空間。分配內存空間。當宏定義在一行中寫不下,需要在下一行繼續時,只需在最后一個當宏定義在一行中寫不下,需要在下一行繼續時,只需在最后一個字符后緊接著加一個反斜杠字符后緊接著加一個反斜杠“”。可用宏定義表示數據類型,使書寫方便。可用宏定義表示數據類型,使書寫方便。編譯預處理編譯預處理宏定義宏定義有參數的宏定義有參數的宏定義格式:格式:#define 宏名宏名(形參表形參表) 字符串字符串舉例:舉例:說明:說明:實參個數與形參個數相同,但沒有類型要求。實參個數與形參個數相同,但沒有
8、類型要求。宏名和形參表之間不能有空格出現。宏名和形參表之間不能有空格出現。如宏定義包含如宏定義包含“#”,則宏替換時將,則宏替換時將“#”去掉,并將其前后字符串去掉,并將其前后字符串合在一起。合在一起。編譯預處理編譯預處理#define M(a,b) a*b條件編譯條件編譯條件編譯條件編譯目的和作用目的和作用條件編譯是指對源程序中某段程序通過條件來控制是否參加編譯。條件編譯是指對源程序中某段程序通過條件來控制是否參加編譯。根據條件來選取需要的代碼進行編譯,以便生成不同的應用程序,根據條件來選取需要的代碼進行編譯,以便生成不同的應用程序,供不同用戶使用。供不同用戶使用。此外,條件編譯還可以方便程序的逐段調試,簡化程序調試工作。此外,條件編譯還可以方便程序的逐段調試,簡化程序調試工作。指令:指令:#if#ifdef#ifndef#else#endif編譯預處理編譯預處理小結小結編譯預處理功能是語言特有的功能,它是在對源程編譯預處理功能是語言特有的功能,它是在對源程序正式編譯前由預處理程序完成的。程序員在程序中序正式編譯前由預處理程序完成的。程序員在程序中用預處理命令來調用這些功能。預處理命令若
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼筋加工合作協議模板
- 項目管理采購管理策略與方法試題及答案
- 2025年銀行資格證考試的知識點歸納試題及答案
- 律師在企業并購中的作用
- 微生物檢驗技術考試指南與答案
- 項目文檔標準與規范試題及答案
- 項目預算控制能力試題及答案
- 分析市場變化的管理策略計劃
- 倡導學生友善待人的習慣計劃
- 分析品牌建設中的關鍵成功因素計劃
- GB∕T 40801-2021 鈦、鋯及其合金的焊接工藝評定試驗
- 北師大版小學六年級數學總復習知識點歸納
- 阻火器殼體的設計
- 好書推薦——《青銅葵花》PPT課件
- 景區防火應急預案
- 壓瘡的預防措施及護理
- 國家開放大學《病理生理學》形考任務1-4參考答案
- 佳力圖M52空調操作手冊
- (修正版)壓實度自動計算表
- 平凡之路歌詞
- 教師資格證統計表
評論
0/150
提交評論