原本用宏定义包起来的代码类似如下:
#ifndef A // codes #endif // A
现在要加入一个宏定义 B,实现类似这样的条件判断(显然实际上这样是不行的):
#ifndef A && ifdef B
其实应该这样:
#if (!defined A) && (defined B) // codes #endif // !A && B
这就修正了之前一直以为的“既生 #ifdef,何生 #if defined”的思维,其实还是有差别的。
trackback: http://wutiam.net/2009/08/logical-and-or-operation-in-ifdef/