C語言中的三大預編譯功能
阿新 • • 發佈:2019-01-31
巨集定義是C語言提供的三種預處理功能的其中一種。巨集定義和操作符的區別是:巨集定義是替換,不做計算,也不做表示式求解。
巨集定義又稱為巨集代換、巨集替換,簡稱“巨集”。格式: 其中的識別符號就是所謂的符號常量,也稱為“巨集名”。 預處理(預編譯)工作也叫做巨集展開:將巨集名替換為字串。 掌握"巨集"概念的關鍵是“換”。一切以換為前提、做任何事情之前先要換,準確理解之前就要“換”。 即在對相關命令或語句的含義和功能作具體分析之前就要換: 例: 把程式中出現的Pi全部換成3.1415926 說明: (1)巨集名一般用大寫 (2)使用巨集可提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:
帶引數
除了一般的字串替換,還要做引數代換 格式: 例如:#define S(a,b) a*b area=S(3,2);第一步被換為area=a*b; ,第二步被換為area=3*2; 類似於檔案包含有兩種格式,分別是:#include "file" 和 #include <file> 這兩格式的區別在於: 1.使用雙引號,系統首先到當前目錄下查詢被包含的檔案,如果沒找到,再到系統指定的"包含檔案目錄"(由使用者在配置環境時設定)去找。 2.使用尖括號:直接到系統指定的"包含檔案目錄"去查詢。 通常使用雙引號比較保險。 ==============================預編譯 條件編譯指令將決定哪些程式碼被編譯,而哪些是不被編譯的。 可以根據表示式的值或者某個特定的巨集是否被定義來確定編譯條件。
#if、#else、#elif和#endif指令
一般形式有如下幾種 (1)
#if表示式
//語句段1
#else
//語句段2]
#endif
|
#if表示式1
//語句段1
#elif表示式2
//語句段2
#else
//語句段3
#endif
|
#ifdef和#ifndef
(1)#ifdef的一般形式:
#ifdef巨集名
//語句段
#endif
|
#ifndef巨集名
//語句段
#endif
|