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