预处理程序指令#if和#ifdef之间的区别

时间:2010-09-27 10:34:14

标签: c-preprocessor

以下两个预处理器控制语句之间有什么区别(如果有的话)。

#if

#ifdef

2 个答案:

答案 0 :(得分:119)

您可以通过以下方式证明其差异:

#define FOO 0
#if FOO
  // won't compile this
#endif
#ifdef FOO
  // will compile this
#endif

#if检查符号的,而#ifdef检查符号的存在(无论其值如何)。< / p>

答案 1 :(得分:37)

#ifdef FOO

是:

的快捷方式
#if defined(FOO)

#if也可用于其他测试或更复杂的预处理器条件。

#if defined(FOO) || defined(BAR)