(#ifdef) 与 (#define <boolean>)

(#ifdef) vs. (#define <boolean>)

我想弄清楚哪种做法最好:

#define TEST 
//#define TEST commented if not used or simply deleted
#define TEST 1
#define TEST 0 //if not used

为了可读性,我更喜欢定义一个 "Boolean" 并在 if 中检查它,但我想它效率不高,因为它不使用 #ifdef 而它需要每次都在 if

中检查

很久以前,一些编译器(如果我没记错的话,一个是用于 Solaris 的)无法正确编译使用第一个片段的代码。

但 C 标准(现在)要求他们这样做,因此使用第二种方式完全没有任何好处,现在可以将其视为特殊方式。

当然,如果您需要 TEST 是一个数值,例如在条件检查中而不是仅仅使用 #ifdef,那么您需要使用第二种方式。

虽然您不能在第二种情况下使用 #ifdef,但您绝对可以使用 #if,因此 TEST 0 不会产生额外的运行时成本。顺便说一句。也意味着你可以有多个不同的测试值,可能对应于不同的日志级别或类似的东西

(按照 Bathsheba 的建议发表我的评论作为答案)