預處理是在詞法掃瞄和語法分析之前的工作。預處理是c的乙個重要功能。
編譯之前,預處理程式將引用程式中的預處理命進行預處理,處理之後進入編譯。如圖。
預處理命令是以#巨集定義開頭的行。這些命令放在函式之外,經常放在程式的前面,成為預處理部分。
c提供了多種預處理功能,如巨集定義,檔案包含,條件編譯等。
合理使用預處理功能寫出來的程式便於閱讀修改移植和除錯也有利於模組化的程式設計。
巨集定義的功能是用乙個識別符號表示乙個字串。編譯時所有的巨集名都會替換成定義的字串。無引數巨集:#define 巨集名 字串行末沒有分號。作用域為從巨集定義到源程式結束。如果要終止可以使用#undef命令。
巨集定義可以巢狀。巨集名一般大寫。有引數巨集:#define 巨集名(引數列表
) 字串
巨集名和參數列之間不能有空格。巨集定義中的形參最好用括號。檔案包含把指定的檔案插入本命令列,組成乙個原始檔。條件編譯在程式設計中,許多公用的符號常量或巨集定義等可單獨組成乙個檔案。
include""和
include<>
有區別。
<>
是在目錄中查詢,
""是在原始檔中查詢。
乙個include
命令只能包含乙個檔案。
本段待更新C語言編譯預處理
title date br description c語言編譯預處理 2019 11 06 14 35 32 0800 預處理 c語言 c語言預處理是對源 進行初步轉換 碼農有道 c源程式 編譯預處理 編譯 優化程式 匯程式設計序 鏈結程式 可執行檔案其中編譯預處理階段,讀取c源程式,對其中的預處理...
C語言 08 編譯預處理
8.1.1 無引數的巨集定義 巨集常量 如果在程式中大量使用到了100這個值,那麼為了方便管理,我們可以將其定義為 const int num 100 但是如果我們使用num定義乙個陣列,在不支援c99標準的編譯器上是不支援的,因為num不是乙個編譯器常量,如果想得到了乙個編譯器常量,那麼可以使用 ...
c語言整理編譯預處理
c程式執行過程 源程式 編譯預處理 編譯 優化程式 匯程式設計序 鏈結程式 可執行檔案。編譯預處理時,先要讀取源程式,對預處理指令 開頭指令 以及特殊的符號進行處理,比如define 替換指令,也會進行刪除注釋,多餘的空白字元,然後產生的預處理檔案或者程式傳給編譯器,在程式中以 開頭的編譯指令稱為預...