#ifndef
、#define
和#endif
是条件编译指令,用于控制头文件的多次包含和重复定义的问题。它们的作用如下:
-
#ifndef
(如果未定义):#ifndef
指令用于检查某个标识符是否已经被定义。如果该标识符未定义,则执行#ifndef
和#endif
之间的代码块。一般情况下,#ifndef
后面会跟着一个宏定义的标识符,通常是头文件的宏保护符(通常是头文件名称的大写形式,用下划线替换文件名中的点号)。如果该标识符未定义,表示该头文件还未被包含,可以继续执行后续的定义和代码。 -
#define
(定义):#define
指令用于定义一个标识符,通常用于定义宏。在条件编译中,#define
指令用于定义一个标识符,表示该头文件已经被包含。这样,在后续的代码中再次包含同一个头文件时,由于该标识符已经被定义,#ifndef
条件将不满足,从而避免了重复包含和重复定义的问题。 -
#endif
(结束):#endif
指令用于结束条件编译的代码块。它与#ifndef
配对使用,表示条件编译的结束。