<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                本文目錄 - [條件編譯的概念](http://www.cnblogs.com/mjios/archive/2013/03/20/2971275.html#label0) - [一、基本用法](http://www.cnblogs.com/mjios/archive/2013/03/20/2971275.html#label1) - [二、舉個例子](http://www.cnblogs.com/mjios/archive/2013/03/20/2971275.html#label2) - [三、其他用法](http://www.cnblogs.com/mjios/archive/2013/03/20/2971275.html#label3) 說明:這個C語言專題,是學習iOS開發的前奏。也為了讓有面向對象語言開發經驗的程序員,能夠快速上手C語言。如果你還沒有編程經驗,或者對C語言、iOS開發不感興趣,請忽略 上一篇已經介紹了[預處理指令中的宏定義](http://www.cnblogs.com/mjios/archive/2013/03/20/2969817.html),這篇就介紹一下條件編譯 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/03/20/2971275.html#labelTop) ### 條件編譯的概念 在很多情況下,我們希望程序的其中一部分代碼只有在滿足一定條件時才進行編譯,否則不參與編譯(只有參與編譯的代碼最終才能被執行),這就是條件編譯。 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/03/20/2971275.html#labelTop) ### 一、基本用法 ~~~ 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后面的條件一般是判斷宏定義而不是判斷變量,因為條件編譯是在編譯之前做的判斷,宏定義也是編譯之前定義的,而變量是在運行時才產生的、才有使用的意義 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/03/20/2971275.html#labelTop) ### 二、舉個例子 ~~~ 1 #include <stdio.h> 2 3 #define MAX 11 4 5 int main () 6 { 7 #if MAX == 0 8 printf("MAX是0"); 9 #elif MAX > 0 10 printf("MAX大于0"); 11 #else 12 printf("MAX小于0"); 13 #endif 14 return 0; 15 } ~~~ 在第3行定義了一個宏MAX,當然在開發中這個MAX可能被定義在其他頭文件中,現在只是為了方便演示,就寫到main函數上面了。注意第7到第13行的條件編譯語句。 由于MAX為11,所以#elif的條件成立,第10行代碼將會被編譯進去,其實編譯預處理后的代碼是這樣的: ~~~ 1 /*stdio.h文件中的內容將會代替#include <stdio.h>的位置*/ 2 3 int main () 4 { 5 printf("MAX大于0"); 6 return 0; 7 } ~~~ 代碼變得非常簡潔,輸出結果:![](https://box.kancloud.cn/2016-05-07_572d7678aecd8.png) [回到頂部](http://www.cnblogs.com/mjios/archive/2013/03/20/2971275.html#labelTop) ### 三、其他用法 ### 1.#if?defined()和#if?!defined()的用法 #if?和?#elif后面的條件不僅僅可以用來判斷宏的值,還可以判斷是否定義過某個宏。比如: ~~~ 1 #if defined(MAX) 2 ...code... 3 #endif ~~~ 如果前面已經定義過MAX這個宏,就將code編譯進去。它不會管MAX的值是多少,只要定義過MAX,條件就成立。 條件也可以取反: ~~~ 1 #if !defined(MAX) 2 ...code... 3 #endif ~~~ 如果前面沒有定義過MAX這個宏,就將code編譯進去。 ### 2.#ifdef和#ifndef的使用 #ifdef的使用和#if?defined()的用法基本一致 ~~~ 1 #ifdef MAX 2 ...code... 3 #endif ~~~ 如果前面已經定義過MAX這個宏,就將code編譯進去。 ?#ifndef又和#if?!defined()的用法基本一致 ~~~ 1 #ifndef MAX 2 ...code... 3 #endif ~~~ 如果前面沒有定義過MAX這個宏,就將code編譯進去。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看