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

问题描述 投票:0回答:2

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

#if

#ifdef
c-preprocessor
2个回答
131
投票

您可以通过以下操作来展示差异:

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

#if
检查符号的 value,而
#ifdef
检查符号的 existence(无论其值是多少)。


40
投票
#ifdef FOO

是以下命令的快捷方式:

#if defined(FOO)

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

#if defined(FOO) || defined(BAR)
© www.soinside.com 2019 - 2024. All rights reserved.