在C或C++编程中,使用#ifndef
, #define
, 和 #endif
指令来防止头文件的内容被多次包含是一种常见做法。这种技术被称为“包含卫士”(Include Guards)或者“头文件卫士”(Header Guards)。它的目的是防止在同一个编译单元中多次包含同一个头文件时发生的重定义错误和编译问题。
#ifndef __NAME_H__
#define __NAME_H__
// 头文件的内容
#endif // __NAME_H__
解释:
-
#ifndef __NAME_H__
:如果宏__NAME_H__
尚未定义,则编译器会继续处理直到遇到#endif
。这个检查防止了头文件的内容在同一个文件中被包含多次。 -
#define __NAME_H__
:定义宏__NAME_H__
。这样,在文件的其余部分或者在同一编译单元的其他文件中,如果再次尝试包含这个头文件,#ifndef
检查将会失败,从而防止了头文件内容的重复包含。 -
头文件内容:在
#define
和#endif
之间放置头文件的实际内容。 -
#endif
:结束条件编译指令。如果__NAME_H__
已经被定义了,