关于宏定义的问题

我在类里面看到有一段定义为

#if CC_USE_MEM_LEAK_DETECTION
static void trackRef(Ref* ref);
static void untrackRef(Ref* ref);
#endif

然后 CC_USE_MEM_LEAK_DETECTION 的宏是这样声明的

#define CC_USE_MEM_LEAK_DETECTION 0

那上面那个if不就是永远为假吗?

这样做肯定有他的道理的,求大神解释。

那种宏起到一种控制作用,例如 #define CC_USE_MEM_LEAK_DETECTION 1 ,
#if CC_USE_MEM_LEAK_DETECTION
static void trackRef(Ref* ref);
static void untrackRef(Ref* ref);
#endif
就会执行。

作用相当于一个开关,根据你的需要更改宏的定义,执行相应的处理。