# Header guard **Header guards** are a pattern used in C and C++ programming languages when writing header files. Header files (.h files) are files that are included in source files (.c and .cpp files) near the top (hence the name) using the `#include <...>` directive. They are used to allow multiple inclusions of the same file but prevent multiple definition errors. Header guards follow the same general pattern: ```c #ifndef __HEADER_GUARD_H__ #define __HEADER_GUARD_H__ // ... #endif /* __HEADER_GUARD_H__ (This is just a comment) */ ``` In C and C++ programming languages, `#include` is nothing but text substitution. If you include something multiple times ## Example A prototypical example of a header guard is the following. ```c // hello_world.h #ifndef __HELLO_WORLD_H__ #define __HELLO_WORLD_H__ struct Hello { const char *text = "world"; }; #endif /* __HELLO_WORLD_H__ */ ``` This allows multiple inclusion of "hello\_world.h" ```c // main.c #include #include int main() { Hello world; return 0; } ```