標籤:class 條件 資訊 nbsp err fine 簡寫 color 檔案
條件編譯是通過先行編譯指令來實現的,主要方法有:
1、#if, #elif, #else, #endif
#if 條件1
程式碼片段1
#elif 條件2
程式碼片段2
...
#elif 條件n
程式碼片段n
#else
程式碼片段n+1
#endif
#if的含義是,如果#if後面的常量運算式為true,則編譯它所控制的代碼,如條件1成立時就程式碼片段1,條件1不成立再看條件2是否成立,如果條件2成立則編譯程式碼片段2,否則再依次類推判斷其它條件,如果條件1-N都不成力則會編譯最後的程式碼片段n+1.
2、#ifdef, #else, #endif 或 #ifndef, #else, #endif
#ifdef: 表示“如果有定義這個宏”
#ifndef: 表示“如果沒有定義這個宏”
#ifdef windows //如果有定義windows這個宏,則執行程式碼片段1,否則執行程式碼片段2
程式碼片段1
#else
程式碼片段2
#endif
#ifndef windows //如果沒有定義windows這個宏,則執行程式碼片段1,否則執行程式碼片段2
程式碼片段1
#else
程式碼片段2
#endif
3、通過宏函數defined(macro_name)
參數為宏名(無需加""),如果該macro_name定義過則返回真,否則返回假,用該函數則可以寫比較複雜的條件編譯指令如
#if defined(macro1) || (!defined(macro2) && defined(macro3))
...
#else
...
#endif
指令 用途 # 空指令,無任何效果 #include 包含一個原始碼檔案 #define 定義宏 #undef 取消已定義的宏 #if 如果給定條件為真,則編譯下面代碼 #ifdef 如果宏已經定義,則編譯下面代碼 #ifndef 如果宏沒有定義,則編譯下面代碼 #elif 如果前面的#if給定條件不為真,當前條件為真,則編譯下面代碼,其實就是else if的簡寫 #endif 結束一個#if……#else條件編譯塊 #error 停止編譯並顯示錯誤資訊
C語言的條件編譯