Страницы

Поиск по вопросам

четверг, 12 декабря 2019 г.

Зачем пишут #ifndef file_h в начале файла

#cpp #c


Для каких ситуаций может быть полезно определение именно таким образом?

#ifndef __IMAGE_H__
#define __IMAGE_H__

////////////////////

#endif 

    


Ответы

Ответ 1



Эти директивы предназначены для защиты от многократного включения при наличии сложной иерархии включаемых файлов - если такой файл уже был включен где-то раньше, то и __IMAGE_H__ будет объявлена, а значит, условный #define будет пропущен, вместе со всеми объявлениями до #endif В некоторых компиляторах есть аналогичные по действию #pragma, например, #pragma once Но версия с условием наиболее универсальна.

Ответ 2



Это же классический include guard, который защищает от повторного включения заголовочных файлов, чтобы не было переопределения одних и тех же функций/классов.

Ответ 3



Так обычно делается в заголовочных файлах, включаемых по include. В случае если заголовочный файл будет включен в программу дважды, это вызовет кучу ошибок типа "повторное объявление". Чтобы этого не происходило, этим define объявляют флаг, что файл уже включен и следовательно, когда он будет включен повторно, ifndef не сработает и все содержимое файла будет проигнорировано.

Комментариев нет:

Отправить комментарий