c語言中預編譯

2021-07-06 01:50:00 字數 1100 閱讀 4233

預編譯又被稱為預處理,是做**文字的替換工作。

處理#開頭的指令。就是為編譯做預備工作的準備。

常見的預編譯指令有三種

(1)#include指令

該指令指示編輯器將***.***檔案的全部內容插入此處,如果使用< >代表在系統指定目錄下搜尋檔案,使用」  」代表現在當前目錄下搜尋檔案,然後在系統預設目錄下搜尋。

(2)#define指令

該指令有三種用法:

第一種是定義標識,標識有效範圍為整個程式,形如#define ***,常與#if配合使用;

第二種是定義常數,如#define max 100,則max代表100;

第三種是定義」函式",如#define get_max(a, b) ((a)>(b)?(a):(b)) 則以後使用get_max(x,y)就可  以 

得到x和y中較大的數(這種方法存在一些弊病,見註2)。

第四種是定義"巨集函式",如#define gen_fun(type) type max_##type(type a,type b) ,使用時,用gen_fun(int),則此處預編譯後就變成了 max_int(int a,int b),以後就可以使用max_int(x,y)就可以得到x和y中較大的數.比第三種,增加了型別的說  

明。        

(3) #if、#else和#endif

指令這些指令一般這樣配合使用:

#if defined(標識) //如果定義了標識

要執行的指令

#else

要執行的指令

#endif

值得一提的是,在第三種預編譯下#ifdef 和 #if defined 的區別在於,後者可以組成複雜的預編譯     

條件比如:

#if defined (aaa) && defined (bbb)

*********

#endif

#if defined (aaa) || version > 12

*********

#endif

而#ifdef 就不能用上面的用法,也就是說,當你要判斷單個巨集是否定義時

#ifdef 和 #if defined 效果是一樣的,但是當你要判斷複雜的條件時,只能用 #if

c語言中條件編譯相關的預編譯指令

條件編譯是根據實際定義巨集 某類條件 進行 靜態編譯的手段。可根據表示式的值或某個特定巨集是否被定義來確定編譯條件。最常見的條件編譯是防止重複包含標頭檔案的巨集,形式跟下面 類似 1 ifndef abcd h 2 define abcd h34 some declaration codes56 e...

c語言中條件編譯相關的預編譯指令

條件編譯是根據實際定義巨集 某類條件 進行 靜態編譯的手段。可根據表示式的值或某個特定巨集是否被定義來確定編譯條件。最常見的條件編譯是防止重複包含標頭檔案的巨集,形式跟下面 類似 1 ifndef abcd h 2 define abcd h34 some declaration codes56 e...

C語言中條件編譯相關的預編譯指令

本文主要介紹c語言的條件編譯指令 條件編譯是根據實際定義巨集 某類條件 進行 靜態編譯的手段。可根據表示式的值或某個特定巨集是否被定義來確定編譯條件。最常見的條件編譯是防止重複包含標頭檔案的巨集,形式跟下面 類似 ifndef abcd h define abcd h some declaratio...