#ifndef _LAYERS_HPP_
#define _LAYERS_HPP_
内容
#endif // _LAYERS_HPP_
前两行代码是C++中的预处理器指令,用于条件编译(conditional compilation)和防止头文件的多重包含。
#ifndef _LAYERS_HPP_
表示 “if not defined”,即如果 _LAYERS_HPP_
没有被定义过,则执行下面的代码。这是一个条件编译的开始。
#define _LAYERS_HPP_
表示将 _LAYERS_HPP_
(只是一个名字)定义为一个宏。这个宏的作用是用来防止头文件的多重包含。当第一次包含该头文件时,这个宏被定义,以后再次包含同一头文件时,由于已经定义过,就会跳过头文件的内容,避免重复定义。
这种预处理器指令通常用于头文件的保护机制,确保头文件在一个编译单元中只被包含一次,防止重定义和编译错误。
假设你有一个头文件 Layers.hpp
,内容如下:
// Layers.hpp
#ifndef _LAYERS_HPP_
#define _LAYERS_HPP_
// 这里放置头文件的实际内容
#endif // _LAYERS_HPP_
现在,假设你有两个源文件 Main1.cpp
和 Main2.cpp
,它们都需要使用 Layers.hpp
。在这两个源文件中,你可以这样使用:
// Main1.cpp
#include "Layers.hpp"
// 这里可以使用 Layers.hpp 中定义的内容
// Main2.cpp
#include "Layers.hpp"
// 这里同样可以使用 Layers.hpp 中定义的内容
当你编译 Main1.cpp
和 Main2.cpp
时,Layers.hpp
只会被包含一次,即使它在两个源文件中都被引用。这是因为预处理器会根据 #ifndef
、#define
和 #endif
来检测是否已经包含了该头文件。第一次包含时,_LAYERS_HPP_
被定义,头文件内容被包含;以后再次包含时,由于 _LAYERS_HPP_
已经定义,预处理器会跳过头文件内容,防止重复定义。