#ifndef and #define are known as header guards. Their primary purpose is to prevent C++ header files from being included multiple times.
Consider a sample header file which uses these guards:
#ifndef HEADERFILE_H #define HEADERFILE_H // some declarations in // the header file. #endif
When the code is compiled, the preprocessor checks whether
HEADERFILE_H has been previously defined. If this is the first time we have included the header,
HEADERFILE_H will not have been defined. Consequently, the compiler defines
HEADERFILE_H and includes the contents of the file.
If the header is included again into the same file,
HEADERFILE_H will already have been defined from the first time that the contents of the header were included; the
ifndef guard will then ensure that the contents of the header will be ignored.
These header guards prevent redeclaration of any identifiers such as types, enums, classes, and static variables. They also prevent recursive inclusions; for example, a case where “file1.h” includes “file2.h” and “file2.h” includes “file1.h”.
View all Courses