條件編譯
1、#if, #elif, #else, #endif
#if 條件 1
代碼段 1
#elif 條件 2
代碼段 2
...
#elif 條件 n
代碼段 n
#else
代碼段 n+1
#endif
2、#ifdef, #else, #endif或#ifndef, #else, #endif
條件編譯的另一種方法是用#ifdef與#ifndef命令,它們分別表示“如果有定義”及“如果無(wú)定義”。有定義是指在編譯此段代碼時(shí)是否有某個(gè)宏通過(guò) #define 指令定義的宏,#ifndef指令指找不到通過(guò)#define定義的某宏,該宏可以是在當(dāng)前文件此條指令的關(guān)面定義的,也可以是在其它文件中,但在此指令之前包含到該文件中的。
#ifdef的一般形式是:
#ifdef macro_name
代碼段 1
#else
代碼段 2
#endif
或
#ifdef的一般形式是:
#ifndef macro_name
代碼段 2
#else
代碼段 1
#endif
3、通過(guò)宏函數(shù)defined(macro_name)
參數(shù)為宏名(無(wú)需加""),如果該macro_name定義過(guò)則返回真,否則返回假,用該函數(shù)則可以寫(xiě)比較復(fù)雜的條件編譯指令如
#if defined(macro1) || (!defined(macro2) && defined(macro3))
...
#else
...
#endif