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檔案...