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

2021-07-04 19:09:42 字數 1530 閱讀 6572

感謝:

一、條件編譯

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

二、 基本用法

1.

#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後面的條件一般是判斷巨集定義而不是判斷變數;

2. 示例

#include #define max 11

int main ()

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

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

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

int main ()

三、其他用法

1. #if defined()和#if !defined()的用法

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

#if defined(max)

...code...

#endif

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

條件也可以取反:

#if !defined(max)

...code...

#endif

2. #ifdef和#ifndef的使用

1> #ifdef的使用和#if defined()的用法基本一致

#ifdef max

...code...

#endif

如果前面已經定義過max這個巨集,就將code編譯進去。

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

#ifndef max

...code...

#endif

如果前面沒有定義過max這個巨集,就將code編譯進去。

感謝:

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

本文目錄 說明 這個c語言專題,是學習ios開發的前奏。也為了讓有物件導向語言開發經驗的程式設計師,能夠快速上手c語言。如果你還沒有程式設計經驗,或者對c語言 ios開發不感興趣,請忽略 回到頂部 在很多情況下,我們希望程式的其中一部分 只有在滿足一定條件時才進行編譯,否則不參與編譯 只有參與編譯的...

C語言預處理之條件編譯

這是stdio.h的頭幾行 if msc ver 1000 pragma once endif ifndef inc stdio define inc stdio if defined win32 defined mac error error only mac or win32 targets s...

c 中預處理指令來實現條件編譯

c 預處理器指令是在編譯時呼叫的。預處理器指令 preprocessor directive 告訴c 編譯器要編譯哪些 並指出如何處理特定的錯誤和警告。c 預處理器指令還可以告訴c 編輯器有關 組織的資訊。1.定義符號和取消符號定義的預處理指令 define 和 undef 預處理指令都以 號開頭並...