C語言 預處理指令2 條件編譯

2021-06-26 06:02:31 字數 1796 閱讀 6388

本文目錄

說明:這個c語言專題,是學習ios開發的前奏。也為了讓有物件導向語言開發經驗的程式設計師,能夠快速上手c語言。如果你還沒有程式設計經驗,或者對c語言、ios開發不感興趣,請忽略

回到頂部

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

回到頂部

1

#if 條件1

2 ...code1...

3#elif 條件2

4 ...code2...

5#else

6 ...code3...

7#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後面的條件一般是判斷巨集定義而不是判斷變數,因為條件編譯是在編譯之前做的判斷,巨集定義也是編譯之前定義的,而變數是在執行時才產生的、才有使用的意義

回到頂部

1 #include 2

3#define

max 1145

int main ()

6

在第3行定義了乙個巨集max,當然在開發中這個max可能被定義在其他標頭檔案中,現在只是為了方便演示,就寫到main函式上面了。注意第7到第13行的條件編譯語句。

由於max為11,所以#elif的條件成立,第10行**將會被編譯進去,其實編譯預處理後的**是這樣的:

1

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

3int main ()

4

**變得非常簡潔,輸出結果:

回到頂部

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

1

#ifdefined(max)

2 ...code...

3#endif

如果前面已經

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

條件也可以取反:

1

#if !defined(max)

2 ...code...

3#endif

如果前面沒有

定義過max這個巨集,就將code編譯進去。

* #ifdef的使用和#if

defined()的用法基本一致

1

#ifdef

max2 ...code...

3#endif

如果前面已經

定義過max這個巨集,就將code編譯進去。

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

1

#ifndef

max2 ...code...

3#endif

如果前面沒有

定義過max這個巨集,就將code編譯進去。

C語言 預處理指令 條件編譯

感謝 一 條件編譯 概念 在很多情況下,我們希望程式的其中一部分 只有在滿足一定條件時才進行編譯,否則不參與編譯 只有參與編譯的 最終才能被執行 這就是條件編譯。二 基本用法 1.if 條件1 code1.elif 條件2 code2.else code3.endif1 如果條件1成立,那麼編譯器就...

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

一 什麼是條件編譯 在很多情況下,我們希望程式的其中一部分 只有在滿足一定條件時才進行編譯,否則不參與編譯 只有參與編譯的 最終才能被執行 這就出現了條件編譯。二 基本用法 if 條件1 code1.elif 條件2 code2.else code3.endif 1 如果條件1成立,那麼編譯器就會把...

C語言 (1) 條件編譯

第一種形式 解釋 如果識別符號被 define語句定義過,則編譯程式段1 否則編譯程式段2 incelud define num ok int main ifdef num printf hello world else printf hello china endif return o 因為已經定...