条件编译的问题:
#ifndef 的定义:是“if not defined”的缩写,是“宏定义”的一种,他是根据是否已经定义了一个变量来进行分支选择,一般用于调试等。实际上确切的说这应该是预处理功能的三种(宏定义,文件包含,条件编译)中的第三种----条件编译。
#endif 的定义:用于结束条件编译,编译时与前面最近的#if,#ifdef,#ifndef 一对,编译两者间的程序段。
条件指示符#ifndef 的目的:最主要的目的是防止“头文件”的重复包含和编译,花费时间短。
详解:在C语音中,h文件只进行了声明工作,则一个C文件多次包含同一个h头文件不会报错,但是定义报错。eg:在h头文件中定义全局变量,一个C文件包含h文件多次,如果不加上#ifndef,会出现重复定义的错误。
条件编译 的三种形式:
1.
#ifndef 标识符
程序段 1
#else
程序段 2 // #else可以省略
#endif
2.
#ifndef 标识符
#define 标识符
程序段 1
#else
程序段 2 // #else可以省略
#endif
3.
#if 表达式
程序段 1
#else
程序段 2 // #else可以省略
#endif
条件编译 的目的:方便程序的调试和移植。