#ifdef#ifndef 指令 (C/C++)

当与 defined 运算符一起使用时,#ifdef#ifndef 预处理器指令与 #if 指令具有相同的效果。

语法

#ifdef identifier
#ifndef identifier

这些指令等效于:

#if defined identifier
#if !defined identifier

备注

可以在任何可以使用 #if 的地方使用 #ifdef#ifndef 指令。 该#ifdefidentifier语句等效于#if 1定义时间identifier。 如果 identifier 尚未定义或未被 #undef 指令定义,它等效于 #if 0。 这些指令只检查使用 #define 定义的标识符是否存在,而不检查在 C 或 C++ 源代码中声明的标识符。

提供这些指令只是为了实现与该语言的早期版本的兼容性。 defined( ) identifier首选与指令一起使用的#if常量表达式。

#ifndef 指令检查与 #ifdef 检查的条件相反的情况。 如果尚未定义标识符,或者如果它的定义已用 #undef 删除,则条件为 true(非零值)。 否则,条件为 false (0)。

Microsoft 专用

可以使用 /D 选项从命令行传递标识符。 使用 /D 最多可以指定 30 个宏。

#ifdef 指令对于检查定义是否存在很有用,因为可以从命令行传递定义。 例如:

// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif

结束 Microsoft 专用

另请参阅

预处理器指令