Как только заголовок включен, он проверяет, определено ли уникальное значение (в данном случае HEADERFILE_H). Тогда, если он не определен, он определяет его и продолжается до остальной части страницы.
Когда код снова включен, первый ifndef завершается с ошибкой, в результате получается пустой файл.
Это предотвращает двойное объявление любых идентификаторов, таких как типы, перечисления и статические переменные.
Ответ 2
#ifndef <token>
/* code */
#else
/* code to include if the token is defined */
#endif
#ifndef проверяет, был ли данный токен #defined ранее в файле или во включенном файле; если нет, он включает в себя код между ним и закрывающим #else или, если нет #else, #endif. #ifndef часто используется для создания именованных файлов заголовков, определяя токен после включения файла и проверки того, что токен не был установлен в верхней части этого файла.
#ifndef _INCL_GUARD
#define _INCL_GUARD
#endif
Ответ 3
Это предотвращает многократное включение одного и того же заголовочного файла в несколько раз.
Предположим, вы включили этот заголовочный файл в несколько файлов. Поэтому в первый раз __COMMON_H__ не определен, он будет определен и включен заголовочный файл.
В следующий раз __COMMON_H__ определен, поэтому он не будет включаться снова.