
條件編譯指令定義與取消定義描述代碼定義AAA為111#define AAA 111定義AAA, 但沒定義AAA的值#define AAA取消定義AAA#undef AAA選擇定義如果定義了AAA, 那么就定義ZZZ為222#ifdef AAA#define ZZZ 222#endif如果沒有定義AAA, 那么就定義ZZZ為222#ifndef AAA#define ZZZ 222#endif如果定義了AAA并且定義了BBB, 那么就定義ZZZ為222#if defined(AAA) defined(BBB)#define ZZZ 222#endif如果定義了AAA或者定義了BBB, 那么就定義ZZZ為222#if defined(AAA) || defined(BBB)#define ZZZ 222#endif如果定義了AAA并且沒有定義了BBB, 那么就定義ZZZ為222#if defined(AAA) (!defined(BBB))#define ZZZ 222#endif||和也可以混合使用, 為了避免邏輯混亂, 最好加上必要的括號也可以結(jié)合#elif,#else一起使用, 相當(dāng)于if - else if - else結(jié)構(gòu)中的else if,else#if (defined(AAA) defined(BBB)) || defined(CCC)#define ZZZ 222#elif (defined(AAA) defined(BBB)) || (!defined(CCC))#define ZZZ 333#else#define ZZZ 444#endif典型用法在xxx.h文件中, 通常會使用以下方式避免頭文件的重復(fù)包含// xxx.h #ifndef _XXX_H_ #define _XXX_H_ ... #endif