本文目錄
說明:這個c語言專題,是學習ios開發的前奏。也為了讓有物件導向語言開發經驗的程式設計師,能夠快速上手c語言。如果你還沒有程式設計經驗,或者對c語言、ios開發不感興趣,請忽略
回到頂部
在很多情況下,我們希望程式的其中一部分**只有在滿足一定條件時才進行編譯,否則不參與編譯(只有參與編譯的**最終才能被執行),這就是條件編譯。
回到頂部
11> 如果條件1成立,那麼編譯器就會把#if 與#elif之間的code1**編譯進去(注意:是編譯進去,不是執行,很平時用的if-else是不一樣的)#if 條件1
2 ...code1...
3#elif 條件2
4 ...code2...
5#else
6 ...code3...
7#endif
2> 如果條件1不成立、條件2成立,那麼編譯器就會把#elif與
#else之間的code2**編譯進去
3> 如果條件1、2都不成立,那麼編譯器就會把#else 與#endif之間的code3編譯進去
4> 注意,條件編譯結束後,要在最後麵加乙個#endif,不然後果很嚴重(自己思考一下後果)
5>#if 和 #elif後面的條件一般是判斷巨集定義而不是判斷變數,因為條件編譯是在編譯之前做的判斷,巨集定義也是編譯之前定義的,而變數是在執行時才產生的、才有使用的意義
回到頂部
1 #include 2在第3行定義了乙個巨集max,當然在開發中這個max可能被定義在其他標頭檔案中,現在只是為了方便演示,就寫到main函式上面了。注意第7到第13行的條件編譯語句。3#define
max 1145
int main ()
6
由於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 因為已經定...