我正在阅读一些C代码,发现像这样的预处理器经常出现:
#if defined(ZERO_MIN_SUPPORT) && (ZERO_MIN_SUPPORT==1)
minimum = 0x0,
#else
minimum = 0x1,
#endif
我想知道,与#if ZERO_MIN_SUPPORT
相比,它是否有任何优势,还是只是一种编码风格?
在我看来,无论ZERO_MIN_SUPPORT
是1、0还是未定义,#if ZERO_MIN_SUPPORT
始终等同于#if defined(ZERO_MIN_SUPPORT) && (ZERO_MIN_SUPPORT==1)
。
#if
相当于#if defined(X) && (x != 0)
,并不完全等同于== 1
。简而言之,你需要编写#if X
,结果将类似于#if defined(X) && (x != 0)
。 - i486