#ifdef
和 #ifndef
指令 (C/C++)
当与 defined
运算符一起使用时,#ifdef
和 #ifndef
预处理器指令与 #if
指令具有相同的效果。
语法
#ifdef
identifier
#ifndef
identifier
这些指令等效于:
#if defined
identifier
#if !defined
identifier
备注
可以在任何可以使用 #if
的地方使用 #ifdef
和 #ifndef
指令。 该#ifdef
identifier
语句等效于#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 专用