#cpp #c
Для каких ситуаций может быть полезно определение именно таким образом? #ifndef __IMAGE_H__ #define __IMAGE_H__ //////////////////// #endif
Ответы
Ответ 1
Эти директивы предназначены для защиты от многократного включения при наличии сложной иерархии включаемых файлов - если такой файл уже был включен где-то раньше, то и __IMAGE_H__ будет объявлена, а значит, условный #define будет пропущен, вместе со всеми объявлениями до #endif В некоторых компиляторах есть аналогичные по действию #pragma, например, #pragma once Но версия с условием наиболее универсальна.Ответ 2
Это же классический include guard, который защищает от повторного включения заголовочных файлов, чтобы не было переопределения одних и тех же функций/классов.Ответ 3
Так обычно делается в заголовочных файлах, включаемых по include. В случае если заголовочный файл будет включен в программу дважды, это вызовет кучу ошибок типа "повторное объявление". Чтобы этого не происходило, этим define объявляют флаг, что файл уже включен и следовательно, когда он будет включен повторно, ifndef не сработает и все содержимое файла будет проигнорировано.
Комментариев нет:
Отправить комментарий