#ifndef
是一个预处理指令,用于防止头文件被多次包含。在 C++ 中,当编译器遇到一个头文件时,它会检查该文件中是否已经定义了一个唯一的宏。如果没有定义,编译器会包含该文件并定义该宏。如果已经定义了该宏,编译器将跳过该文件,以避免重复包含。
为了恰当使用 #ifndef
,请遵循以下步骤:
选择一个唯一的宏名称。通常,这是头文件的名称大写,后面加上 _H_
前缀。例如,对于名为 my_header.h
的头文件,可以使用 MY_HEADER_H_
作为宏名称。
在头文件的开头使用 #ifndef
指令检查宏是否已定义。如果未定义,则包含头文件内容并定义宏。
在头文件的末尾使用 #endif
指令结束条件编译块。
以下是一个示例:
// my_header.h
#ifndef MY_HEADER_H_
#define MY_HEADER_H_
// 头文件内容
#endif // MY_HEADER_H_
这样,当其他源文件包含 my_header.h
时,编译器会首先检查 MY_HEADER_H_
宏是否已定义。如果未定义,编译器会包含头文件内容并定义宏。当同一个头文件被多次包含时,编译器会跳过该文件,因为宏已经被定义了。