你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> 【C語言】條件編譯

【C語言】條件編譯

編輯:關於IOS

1.條件編譯的概念

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

2.基本用法

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

3.其他用法

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的使用

#ifdef的使用和#if defined()的用法基本一致
#ifdef MAX
...code...
#endif
如果前面已經定義過MAX這個宏,就將code編譯進去。
* #ifndef又和#if !defined()的用法基本一致
#ifndef MAX
...code...
#endif
如果前面沒有定義過MAX這個宏,就將code編譯進去。

4.代碼

 

1 #include <stdio.h>
 2 
 3 // 只要寫了#if,在最後面必須加上#endif
 4 
 5 //#define A 5
 6 
 7 int main()
 8 {
 9 #ifndef A
10 //#ifdef A
11 //#if !defined(A)
12     printf("哈哈/n");
13 #endif
14     
15     //int a = 10;
16     /*
17     if (a == 10)
18     {
19         printf("a是10/n");
20     }
21     else if (a == 5)
22     {
23         printf("a是5/n");
24     }
25     else
26     {
27         printf("a其他值/n");
28     }*/
29     /*
30     
31 #if (A == 10)
32     printf("a是10/n");
33 #elif (A == 5)
34     printf("a是5/n");
35 #else
36     printf("a其他值/n");
37 #endif
38      
39      */
40     
41     return 0;
42 }

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved