【发布时间】:2011-04-17 17:00:47
【问题描述】:
以下两个预处理器控制语句之间有什么区别(如果有)。
#if
和
#ifdef
【问题讨论】:
-
它们不是宏也不是控制语句。他们的名字是“预处理指令”。
-
已编辑标题。将文本正文中的“控制语句”保留为“模糊”搜索。
标签: c-preprocessor
以下两个预处理器控制语句之间有什么区别(如果有)。
#if
和
#ifdef
【问题讨论】:
标签: c-preprocessor
您可以通过以下方式展示差异:
#define FOO 0
#if FOO
// won't compile this
#endif
#ifdef FOO
// will compile this
#endif
#if 检查符号的值,而#ifdef 检查符号的存在(无论其值如何)。
【讨论】:
#if 检查符号的 值 以查看它是非零 (true) 还是零 (false)。如果结果为真,则编译该块。
#ifdef FOO
是一个快捷方式:
#if defined(FOO)
#if 也可用于其他测试或更复杂的预处理器条件。
#if defined(FOO) || defined(BAR)
【讨论】:
if (0) 允许在Debug模式下编译行,这样调试的时候可以在块中跳转...