Директива #ifndef
проверяет, определен ли «аргумент» как макрос или нет. Если он не определен (n
в ifndef
означает «не»), то следующий блок вплоть до соответствующего #endif
передается препроцессором.
Если макрос определен, то блок пропускается и не передается компилятору препроцессором.
Итак, #ifndef _headerfile_h
проверяет, определен ли символ _headerfile_h
как макрос или нет.
Из названия макроса кажется, что это часть заголовка include guard .