IOS基礎 C語言學習之預處理指令2 條件編譯

2021-06-28 12:56:36 字數 1685 閱讀 3351

一、什麼是條件編譯

在很多情況下,我們希望程式的其中一部分**只有在滿足一定條件時才進行編譯,否則不參與編譯(只有參與編譯的**最終才能被執行),這就出現了條件編譯。

二、基本用法

#if 條件1

...code1...

#elif 條件2

...code2...

#else

...code3...

#endif

1> 如果條件1成立,那麼編譯器就會把#if 與 #elif之間的code1**編譯進去(注意:是編譯進去,不是執行,很平時用的if-else是不一樣的)

2> 如果條件1不成立、條件2成立,那麼編譯器就會把#elif 與 #else之間的code2**編譯進去

3> 如果條件1、2都不成立,那麼編譯器就會把#else 與 #endif之間的code3編譯進去

4> 注意,條件編譯結束後,要在最後麵加乙個#endif,不然後果很嚴重(自己思考一下後果)

5> #if 和 #elif後面的條件一般是判斷巨集定義而不是判斷變數,因為條件編譯是在編譯之前做的判斷,巨集定義也是編譯之前定義的,而變數是在執行時才產生的、才有使用的意義

三、例子

#include #define max 11

int main ()

編譯預處理後的真實**是這樣的:

/*stdio.h檔案中的內容將會代替#include 的位置*/

int main ()

輸出結果:

max大於0

四、其他用法

1.#if defined()

和#if !defined()的用法

#if 和 #elif後面的條件不僅僅可以用來判斷巨集的值,還可以判斷是否定義過某個巨集。比如:

#if defined(max)

...code...

#endif

如果前面已經定義過max這個巨集,就將code編譯進去。它不會管max的值是多少,只要定義過max,條件就成立。

條件也可以取反:

#if !defined(max)

...code...

#endif

如果前面沒有定義過max這個巨集,就將code編譯進去。

2.#ifdef

和#ifndef的使用

1> #ifdef的使用和#if defined()的用法基本一致

#ifdef max

...code...

#endif

如果前面已經定義過max這個巨集,就將code編譯進去。

2>  #ifndef又和#if !defined()的用法基本一致

#ifndef max

...code...

#endif

如果前面沒有定義過max這個巨集,就將code編譯進去。

C語言學習之預處理

編譯乙個c程式需要經過預處理 編譯 彙編和鏈結幾個步驟,預處理是在編譯之前所做的工作,預處理其實就是對原始檔做一些編輯工作,為編譯做好準備。1.條件編譯 if constant expression endif 或者 if constant expression elif constant expr...

c語言學習筆記 預處理

編譯的幾個階段 我們平時使用的編譯器,其實準確來講應該叫編譯工具鏈,因為其中包括了不止一種編譯器,他們之間相互銜接,完成將程式轉化為二進位制 的功能 主要分為4個階段,預處理 c 彙編.s 編譯.o 鏈結 axf hex bin 四個過程 常用預處理指令 include if,end,define ...

IOS基礎 C語言學習之陣列

一 陣列的基本概念 1.什麼是陣列 陣列,從字面上看,就是一組資料的意思,沒錯,陣列就是用來儲存一組資料的 2.陣列的特點 1 只能存放一種型別的資料,比如int型別的陣列 float型別的陣列 2 裡面存放的資料稱為 元素 二 陣列的定義 1.定義 想要定義乙個陣列,需要宣告兩點 宣告陣列的型別 ...