C 筆記整理7 編譯預處理命令 (總複習)

2021-10-01 21:16:14 字數 1202 閱讀 6035

c語言中除了有說明語句和可執行語句以外,還用編譯預處理命令。按我的理解,其作用就是使畫面更加簡潔,程式更加靈活。需要注意的是,其是編譯系統在對源程式編譯為目標程式之前進行的。所以它最先開始喔。

1,不帶引數的巨集定義

#include 巨集名 巨集體

注意:1,巨集名為區別於變數,一般用大寫字母表示。

2,在預處理階段,即對源程式進行編譯之前,將源程式的所有巨集名都用巨集體替換。

3,巨集體是什麼樣子,替換時就是什麼樣子。(這裡注意有無括號的區別)

4,程式**現的""內的巨集名一律當作普通字串處理。

5,巨集定義無須加;否則替換後,可能會報錯。(c語言不檢查)

6,巨集定義時,可以使用以定義過的巨集名,即巢狀。

例:

#include #define n 20

#define m n-5

int c;

c=20*m;

printf("%d",c); 這裡輸出的即是20*20-5,而非20*(20-5),二者差距還是挺大的

2,帶引數的巨集定義

#include 巨集名(引數列表) 巨集體

注意:1,這裡的引數列表和講函式時類似,即實參。而巨集體所指定的引數即是形參。運用時先將實參帶入形參,再進行巨集替換。

2,巨集名後一定不要加空格,否則會當成不帶引數的巨集定義進行處理。

#include #define sqr(x) x*x

int k=3;

printf("%d",sqr(3)); //這裡將sqr(3)巨集替換為3*3,即9

輸出結果:

9

其作用是在預處理時,用指定檔案的內容替換掉該處理命令列。運用該功能,即可使不同的源**檔案整合在一起了。

#include 《檔名》

注意:1,一對一,乙個include只能對應乙個源c檔案。

2,用<>括住標頭檔案時,預處理程式只在存放c庫函式標頭檔案的標準目錄中搜尋要包含的檔案。

3,用""括住標頭檔案,且沒用指定檔案的所在目錄時,預處理程式首先在原始檔所在的目錄中尋找標頭檔案,若找不到,再到標準目錄中搜尋。(一般要用檔案包含,還是這個比較實用)

這個不做強制要求,有興趣的可在網上自行查閱。其目的,即使源程式的一部分**滿足一定要求後才編譯執行。

C 筆記整理 預處理命令

define和 undef define 它告訴編譯器存在給定名稱的符號 undef 它刪除符號的定義 if elif else endif 這些指令告訴編譯器是否編譯某個 塊 define debug define bug static void main string args if if el...

c語言整理編譯預處理

c程式執行過程 源程式 編譯預處理 編譯 優化程式 匯程式設計序 鏈結程式 可執行檔案。編譯預處理時,先要讀取源程式,對預處理指令 開頭指令 以及特殊的符號進行處理,比如define 替換指令,也會進行刪除注釋,多餘的空白字元,然後產生的預處理檔案或者程式傳給編譯器,在程式中以 開頭的編譯指令稱為預...

筆記 C 預處理命令

預處理命令是提供給編譯器使用的,在對 進行編譯之前,先對預處理命令進行操作 主要包括 檔案引入 include,新的引入標頭檔案不再加 h 巨集定義 define 編譯選擇,如 ifdef else,endif等。1.預編譯頭機制 vc.net 預設情況下使用預編譯頭 yu 不明白的在加入新.h檔案...