《c语言条件编译指令用法》由会员分享,可在线阅读,更多相关《c语言条件编译指令用法(38页珍藏版)》请在金锄头文库上搜索。
1、第 9 章前置處理器著作權所有 旗標出版股份有限公司本章簡介n在編譯器開始編譯程式之前, 會先執行一個 叫做前置處理器 (Preprocessor) 的程式, 對程 式中以 # 開頭的前置處理指令, 進行相關的 處理。n像是前面介紹過的使用 # define 定義常數和 巨集、用 # include 含括檔案等。n這個代換常數和巨集、含括檔案的動作, 就 稱為前置處理, 其過程如下圖所示:前置處理過程前置處理主要有 3 大功用n代換:n以簡單而且有意義的名稱來代替繁瑣的數字或字串, n比如說 #define PI 3.14159 就是以 PI 來代替圓週率的一 大串數字 (3.14159)。n
2、含括檔:n將程式中需要用到的資料檔或者函式含括到程式中後, 就可以在程式中直接使用。n如加上 #include 後, 在程式中便可直接使用各 種標準輸出、輸入的函式。前置處理主要有 3 大功用n條件式編譯:n以限定條件的方式來編譯程式, 符合條件的程式 碼才會被編譯, 不合條件則跳過不編譯。用簡單的名稱代換常數或字串n代換 (Token Replacement) 的意思就是指以 一定義名稱 (identifier) 來代替數值、字串與 運算式等。n所使用的指令是 #define, 用法可分為兩大類 ,n第一種是代換數值以及字串 n另一種是代換算式, 也就是我們在上一章討論的 巨集 (Macro
3、)。代換數值代換字串將欲使用的檔案與函式含括到程式中n所謂含括檔就是把其他檔案含括到程式中n如最常用的 stdio.h 包含內建的標準輸出入 類函式的宣告, 將 stdio.h 含括到程式中, 就 可以在程式內使用像是 printf ( )、scanf ( ) 等內建函式。n使用含括檔 # include 的方式有兩種:n含括內建的含括檔:n含括自訂檔案:含括內建的含括檔n例如:含括內建的含括檔含括自訂檔案n副檔名為 .h 檔。使用時, 需以雙引號括住:n例如:n利用 # include, 除了可以含括編譯器所提供 的內建含括檔外, 也可含括我們自行定義的 檔案。含括自訂檔案 執行結果含括自訂
4、檔案含括自訂檔案含括自訂檔案含括自訂檔案含括自訂檔案條件式編譯n前置處理器中的 # if 具有與條件式 if 類似 的判斷功能。n兩者不同的是, C 語法中的 if 條件式是在程 式執行時, 判斷要執行哪一段程式n而前置處理器的 # if 條件式編譯, 則是在前 置處理時, 判斷等一下要編譯哪一段內容。# if、# elif、# else、# endif 的用法n條件式編譯 # if 是用來 控制前置處理器的編譯 流程n通常會搭配 # elif 與 # else 使用, 並以 # endif 結束。n其使用格式如下:# elif 的用法# elif 的用法# elif 的用法# elif 的用
5、法從螢幕輸出含括檔所定義的內容# ifdef 與 # ifndef 的用法n條件式編譯 # ifdef 與 # ifndef n兩者都是用來判斷常數名稱或者巨集名稱是否 已經用 # define 定義完成。n# ifdef 的意思表示如果該名稱 “已” 定義, 就 編譯接下來的程式碼;n# ifndef 的意思是若該定義名稱 “未“ 定義, 就編譯接下來的程式碼。n我們可以依此特性來作程式的除錯n避免執行到未定義的定義名稱n或者重複定義巨集或者常數:計算立方體的表面積計算立方體的表面積綜合演練 螢幕輸出定義與未定義的結果螢幕輸出定義與未定義的結果螢幕輸出定義與未定義的結果螢幕輸出定義與未定義的結果螢幕輸出定義與未定義的結果含括檔的應用:螢幕輸出英文的中文解釋彩虹顏色中英名稱的定義依使用者選擇輸出定義的字串依使用者選擇輸出定義的字串依使用者選擇輸出定義的字串