#if既关心宏是否定义,又关心宏的逻辑的真假
#ifdef(#if defined())、#ifndef(#if !defined())仅仅关心宏是否被定义,不关心宏的
#define XXX 0
// 第一段条件编译
#if XXX
逻辑1
#else
逻辑2
#endif
// 第二段条件编译
#ifdef XXX
逻辑3
#else
逻辑4
#endif
注:第一段的逻辑2会被编译,第二段的逻辑3会被编译
#if既关心宏是否定义,又关心宏的逻辑的真假
#ifdef(#if defined())、#ifndef(#if !defined())仅仅关心宏是否被定义,不关心宏的
#define XXX 0
// 第一段条件编译
#if XXX
逻辑1
#else
逻辑2
#endif
// 第二段条件编译
#ifdef XXX
逻辑3
#else
逻辑4
#endif
注:第一段的逻辑2会被编译,第二段的逻辑3会被编译