#ifdef 和 #if defined 的區別在於,後者能夠組成複雜的預編譯條件,好比 #if defined (AAA) && defined (BBB) xxxxxxxxx #endif #if defined (AAA) || VERSION > 12 xxxxxxxxx #endif 而#ifdef 就不能用上面的用法,也就是說,當你要判斷單個宏是否認義時 #ifdef 和 #if defined 效果是同樣的,可是當你要判斷複雜的條件時,只能用 #if defined