【學習筆記】【C語言】條件編譯,學習筆記編譯

來源:互聯網
上載者:User

【學習筆記】【C語言】條件編譯,學習筆記編譯

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 A10 //#ifdef A11 //#if !defined(A)12     printf("哈哈\n");13 #endif14     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     else26     {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 #else36     printf("a其他值\n");37 #endif38      39      */40     41     return 0;42 }

 

 

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.