在編譯前進行解析處理的指令
源** —> 編譯預處理 —> 編譯 —> 鏈結 —> 執行
編譯預處理指令
1.巨集定義 #define
1.1 不帶引數的巨集定義
1.2 帶引數的巨集定義
2.條件編譯
3.檔案包含 #include
編譯預處理指令 :
1.所有的編譯預處理指令都是以#號開頭
2.所有的編譯預處理指令都不需要分號
巨集名的命名規範
1.全部大寫有多個單詞中間使用下劃線隔開(常用)
2.以k開頭的駝峰標識(不常用)
不帶引數的巨集定義 : 在預編譯的時候所出現巨集名標識的地方都會被替換成巨集名後面的值
注意點 :
1.在注釋中的巨集名不會替換
2.在字串中出現的巨集名不會被替換
#define len 10
for(int i = 0;i < len;i++); };
帶引數的巨集定義 : 把出現巨集名表示式的地方都會把巨集名後面小括號中的引數代入到巨集後面的表示式中, 然後進行替換
#define 巨集名 ( 引數列表 ) 表示式
注意點:
1.引數列表中沒有型別
2.巨集名與括號之間一定不要加空格
#define max(num1,num2) num1 > num2 ? num1 : num2
int max(int num1,int num2)
int main ()
帶引數的巨集與函式的區別
1 .函式有乙個呼叫過程 , 會開闢乙個新的儲存空間 , 需要花費一些開銷
2.巨集僅僅是做乙個替換的操作
使用場景 :
1.當計算比較簡單 , 引數比較少的時候使用巨集, 巨集提高運算效率
2.當邏輯比較複雜 , 引數多的時候使用函式
巨集的注意點 :
1.如果做題 , 巨集僅僅是做乙個替換操作
2.如果自己寫巨集定義 , 那麼所有出現引數以及運算結果的地方都要加上括號
3.巨集有一些固有的缺點是沒有辦法消除的 , 在使用帶引數巨集的時候不要在引數中使用++ -- += -= /= *= %=
C 基礎 預處理指令
預處理指令指導編譯器在實際編譯開始前對資訊進行預處理。下表是一些常用預處理指令 預處理器指令 描述 define 它用於定義一系列成為符號的字元。undef 它用於取消定義符號。if它用於測試符號是否為真。else 它用於建立復合條件指令,與 if 一起使用。elif 它用於建立復合條件指令。end...
C語言預處理指令
一 預處理的由來 在c 的歷史發展中,有很多的語言特徵 特別是語言的晦澀之處 來自於c語言,預處理就是其中的乙個。c 從c語言那裡把c語言預處理器繼承過來 c語言預處理器,被bjarne博士簡稱為cpp,不知道是不是c program preprocessor的簡稱 二 常見的預處理功能 預處理器的...
C語言預處理指令
預處理指令 1.程式的編譯過程 編譯器將c語言源 變異成可執行程式是通過以下幾個步驟完成的 1 預處理 處理 中的預處理指令 以 開頭的 gcc e c o i 2 編譯 將源 編譯成彙編指令 gcc s i 3 彙編 將彙編指令變異成目標檔案 gcc c s 4 鏈結 將目標檔案 可能有多個 連線...