#ifdef 和 #ifndef 指令

预处理器指令,用于确定是定义特定的预处理器常量还是宏。

#ifdef 标识符 ...
#endif
#ifndef 标识符 ...
#endif

parameters

说明
标识符
要检查的常量或宏的标识符。

备注

可以在#if使用的任何位置使用 #ifdef 和 #ifndef 指令。 #ifdef 语句等效于 ) 指令。 这些指令仅针对是否存在使用 #define 指令定义的标识符而检查,而不适用于 C 或 C++ 源代码中声明的标识符。

提供这些指令只是为了实现与该语言的早期版本的兼容性。 首选将 定义的 运算符与 #if 指令一起使用。

#ifndef 指令检查 #ifdef 所检查的条件的相反值。 如果未定义标识符,则条件为 true (非零) ;否则,条件为 false (零) 。

示例

可使用 /D 选项从命令行中传递 identifier。 可使用 /D 指定最多 30 个宏。 这对于检查定义是否存在很有用,因为可以从命令行中传递定义。 以下示例使用此行为确定是否在测试模式下运行应用程序。

// PROG.CPP
#ifndef test
  #define final
#endif
int main()
{
}

使用以下命令编译时,prog.cpp 将在测试模式下进行编译:否则,它将在最终模式下进行编译。

CL.EXE /Dtest prog.cpp

另请参阅

预处理器指令 (DirectX HLSL)

#if、)